工作三年的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

  1. 线程
  2. JVM内存区域
  3. JVM运行时内存
  4. 垃圾回收与算法
  5. JAVA 四种引用类型
  6. GC分代收集算法 VS 分区收集算法
  7. GC垃圾收集器
  8. JAVA IO/NIO
  9. JVM 类加载机制

 

JAVA集合

  1. 接口继承关系和实现
  2. List
  3. ArrayList(数组)
  4. Vector(数组实现、线程同步)
  5. LinkList(链表)
  6. Set
  7. HashSet(Hash表)
  8. TreeSet(二叉树)

 

JAVA多线程并发

  1. JAVA并发知识库
  2. JAVA线程实现/创建方式
  3. 4种线程池
  4. 线程生命周期(状态)
  5. 终止线程4种方式
  6. sleep与wait 区别
  7. start与run区别
  8. JAVA后台线程
  9. JAVA锁
  10. 线程基本方法4.1.11. 线程上下文切换
  11. 同步锁与死锁
  12. 线程池原理
  13. JAVA阻塞队列原理
  14. CyclicBarrier、CountDownLatch、Semaphore的用法
  15. volatile关键字的作用(变量可见性、禁止重排序)
  16. 如何在两个线程之间共享数据

 

JAVA基础

  1. JAVA异常分类及处理
  2. JAVA反射
  3. JAVA注解
  4. JAVA内部类
  5. JAVA泛型
  6. JAVA序列化(创建可复用的Java对象)
  7. JAVA复制

 

Spring 原理

  1. Spring 特点
  2. Spring 核心组件
  3. Spring 常用模块
  4. Spring 主要包
  5. Spring 常用注解
  6. Spring第三方结合
  7. Spring IOC原理
  8. Spring APO原理
  9. Spring MVC原理
  10. Spring Boot原理
  11. JPA原理
  12. Mybatis缓存
  13. Tomcat架构

 

微服务

  1. 服务注册发现
  2. API 网关
  3. 配置中心
  4. 事件调度(kafka)
  5. 服务跟踪(starter-sleuth)
  6. 服务熔断(Hystrix)
  7. Hystrix断路器机制
  8. API管理

 

Netty 与RPC

  1. Netty 原理
  2. Netty 高性能
  3. Netty RPC实现
  4. 关键技术
  5. 核心流程
  6. 消息编解码
  7. 通讯过程
  8. RMI实现方式

 

分布式缓存

  1. 缓存雪崩
  2. 缓存穿透
  3. 缓存预热
  4. 缓存更新
  5. 缓存降级

 

Zookeeper

  1. Zookeeper概念
  2. Zookeeper角色
  3. Zookeeper工作原理(原子广播)
  4. Znode有四种形式的目录节点

 

Kafka

  1. Kafka概念
  2. Kafka数据存储设计
  3. partition的数据文件(offset,MessageSize,data)
  4. 数据文件分段segment(顺序读写、分段命令、二分查找)
  5. 数据文件索引(分段索引、稀疏存储)
  6. 生产者设计
  7. 负载均衡(partition会均衡分布到不同broker上)
  8. 批量发送
  9. 压缩(GZIP或Snappy)
  10. 消费者设计

 

RabbitMQ

  1. RabbitMQ概念
  2. RabbitMQ架构
  3. Exchange 类型

 

算法

  1. 一致性算法
  2. Java算法
  3. 数据结构
  4. 加密算法

 

看完上面的内容,相信大家已经有了清晰的目标与方向,接下来就是查找学习资料了,我们为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考,学习资料包内容及领取方法如下

部分资料展示:

 

需要这份资料的,点赞+关注

关注公众号:Java架构师联盟,每日更新技术好文,谢谢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章