需要重点掌握的知识点必须是当下最流行、最热门、面试被问到的概率最高的知识点,把时间花在掌握这些知识点上的收益最高,不要去研究冷门知识。
HashMap
ConcurrentHashMap
垃圾回收
线程池
arthas
定位OOM
这几个是有代表性的,其他基础知识自不必多说,是需要掌握的。很多衍生出来的知识点,能多覆盖就多覆盖。再举几个例子:
中间件方面,MySQL和Redis被问到的概率最高,因为这两个应用最广泛。首先说下MySQL,MySQL最容易被问到的知识点如下:
其他的,事务、锁、并发问题被问到的概率小一些。
Redis中经常会考察的知识点如下:
spring cloud和spring cloud alibaba都行,要熟悉每个组件的作用,里面最容易被拿来问问题的是限流、熔断、降级相关的知识点,如果你用的是spring cloud的,可以重点熟悉下Hystrix。
分布式系统最经典的就是一致性问题,关于一致性的几个理论要知道。
项目亮点通常有几种提问方式:
针对这些提问,可以结合自己的业务场景准备一些案例来作答,比如es的优化场景、利用redis缓存app数据并解决缓存失效的各种问题、mysql慢查询优化等等。回答这些问题时,有几个要点:
我的几个案例都来自我平时的工作总结:
es性能优化
Java程序内存优化
另外,回答这类问题可以套用STAR法则(Situation Task Action Result)。
叫什么,毕业于哪个学校,多少年经验,目前就职于哪家公司,公司主要是做啥的,你在公司主要是做啥的,项目特点(web项目?分布式项目?大数据实时分析项目),业余写博客?刷leetcode?写开源项目?
不要说公司和同事坏话,也不要抱怨自己工资低。
目前人数少的话,可以按照高峰期的说。
每个项目或者功能模块安排一个首要责任人,首要责任人对自己的模块要非常熟悉,负主要责任,然后每个功能模块至少要有两个人熟悉,这样一个人请假或者离职的时候还能够替补上。
表现优异的要在绩效考核上给与正面回馈,表现不好的要及时沟通和了解情况。
定期组织技术分享,可以分享学习心得、解决问题的经验等等,这样每个人都会觉得自己一直在进步,有成就感。
对团队成员要友善,以鼓励为主,工作上有困难要及时沟通和提供帮助。
一般公司都有活动经费,平时多聚聚餐,定期组织活动,比如打羽毛球、篮球等,培养团队感情,增加凝聚力。
公司有福利的话,力所能及的帮团队成员争取。
每家公司都有临时的突发事件或工作量繁重的重大项目,这个时候加班很正常,偶尔这样不要紧,能够接受。
所面试的岗位技术含量高,就说追求技术。所面试的岗位偏业务,就说追求业务。