工作三年的java开发工程师来面试,问技术原理他竟然这样跟我说
今天面试一个三年的java开发工程师,问工作原理他答不上来。这是当时的面试过程:
问: spring mvc在开发中常用吧?
答:常用。
问:那你能讲讲它的工作原理吗?
答:会用就行,了解原理干啥。
微微一笑,再问:那你能说说平时使用了它的哪些注解呢?
答:用的时候百度一下,谁记这个呀。
此时心里有无数个…
不过对于这段面试体验,有应聘者觉得现在的面试官特别浮躁,张嘴原理闭嘴高并发,又是大数据又是AI,仿佛不懂就是另类人一般,多问问基础,招过来是干活的,不是画饼的,我就招到过这样的面霸,问什么都对答如流,入职后,发现真没办法做业务。
现在很多公司都这样,只喜欢会吹牛的,口才好的,能说会道的,如果你性格内向不善言辞,就算技术再牛,也会被面试官在嘲笑中pass掉。
但是一个常用的东西都不记得,那说明能力是有够差的,而且基本原理不清楚,说明平时不注重技术的深度,只是满足业务的开发,这种人慎用。来看看程序员同行怎么说:
1,主要要看你招进这个人是要干嘛?并且现在你是否缺人干活。如果主要是干项目,那有大的项目经验很重要,你招他又不是研究中间件或者什么高深的算法,一群人来面试,很理解面试官抱着选择优秀员工的想法,但最后终归是要落地的,面试官也应该多方面去看待和思考。
2,面试造火箭,工作拧螺丝调侃一下就行了,真的瞧不起原理就过分了。
了解原理只是第一步,有三个好处,1.匹配框架规则,避免低性能代码。2.排查bug。3.读懂设计思想,为架构做积累。
例如读懂kafka原理,学到用多分区思想提高吞吐量,读懂mq原理,学到用确认机制保证可靠性。我认为一个架构师,设计架构不应该是几个主流框架的排列组合,而是框架设计思维的组合,这是真正的精髓。
但是,我也理解平时的时候,程序员都比较忙,没什么时间去进行完整的学习,所以,我在这里也给大家整理了一份文档,大家来看一下
目录:
这个PDF的内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈,文末获取免费领取方式
JVM
- 线程
- JVM内存区域
- JVM运行时内存
- 垃圾回收与算法
- JAVA 四种引用类型
- GC分代收集算法 VS 分区收集算法
- GC垃圾收集器
- JAVA IO/NIO
- JVM 类加载机制
JAVA集合
- 接口继承关系和实现
- List
- ArrayList(数组)
- Vector(数组实现、线程同步)
- LinkList(链表)
- Set
- HashSet(Hash表)
- TreeSet(二叉树)
JAVA多线程并发
- JAVA并发知识库
- JAVA线程实现/创建方式
- 4种线程池
- 线程生命周期(状态)
- 终止线程4种方式
- sleep与wait 区别
- start与run区别
- JAVA后台线程
- JAVA锁
- 线程基本方法4.1.11. 线程上下文切换
- 同步锁与死锁
- 线程池原理
- JAVA阻塞队列原理
- CyclicBarrier、CountDownLatch、Semaphore的用法
- volatile关键字的作用(变量可见性、禁止重排序)
- 如何在两个线程之间共享数据
JAVA基础
- JAVA异常分类及处理
- JAVA反射
- JAVA注解
- JAVA内部类
- JAVA泛型
- JAVA序列化(创建可复用的Java对象)
- JAVA复制
Spring 原理
- Spring 特点
- Spring 核心组件
- Spring 常用模块
- Spring 主要包
- Spring 常用注解
- Spring第三方结合
- Spring IOC原理
- Spring APO原理
- Spring MVC原理
- Spring Boot原理
- JPA原理
- Mybatis缓存
- Tomcat架构
微服务
- 服务注册发现
- API 网关
- 配置中心
- 事件调度(kafka)
- 服务跟踪(starter-sleuth)
- 服务熔断(Hystrix)
- Hystrix断路器机制
- API管理
Netty 与RPC
- Netty 原理
- Netty 高性能
- Netty RPC实现
- 关键技术
- 核心流程
- 消息编解码
- 通讯过程
- RMI实现方式
分布式缓存
- 缓存雪崩
- 缓存穿透
- 缓存预热
- 缓存更新
- 缓存降级
Zookeeper
- Zookeeper概念
- Zookeeper角色
- Zookeeper工作原理(原子广播)
- Znode有四种形式的目录节点
Kafka
- Kafka概念
- Kafka数据存储设计
- partition的数据文件(offset,MessageSize,data)
- 数据文件分段segment(顺序读写、分段命令、二分查找)
- 数据文件索引(分段索引、稀疏存储)
- 生产者设计
- 负载均衡(partition会均衡分布到不同broker上)
- 批量发送
- 压缩(GZIP或Snappy)
- 消费者设计
RabbitMQ
- RabbitMQ概念
- RabbitMQ架构
- Exchange 类型
算法
- 一致性算法
- Java算法
- 数据结构
- 加密算法
看完上面的内容,相信大家已经有了清晰的目标与方向,接下来就是查找学习资料了,我们为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考,学习资料包内容及领取方法如下
部分资料展示:
需要这份资料的,点赞+关注
关注公众号:Java架构师联盟,每日更新技术好文,谢谢