主要针对Java程序员,当然也包含一些通用的内容。

重点掌握的知识点

需要重点掌握的知识点必须是当下最流行、最热门、面试被问到的概率最高的知识点,把时间花在掌握这些知识点上的收益最高,不要去研究冷门知识。

Java

HashMap
ConcurrentHashMap
垃圾回收
线程池
arthas
定位OOM

这几个是有代表性的,其他基础知识自不必多说,是需要掌握的。很多衍生出来的知识点,能多覆盖就多覆盖。再举几个例子:

  • 死锁
  • sleep和wait的区别
  • 怎么定位CPU占用高的问题(top -h或者arthas)
  • CMS和G1回收器的特点

MySQL

中间件方面,MySQL和Redis被问到的概率最高,因为这两个应用最广泛。首先说下MySQL,MySQL最容易被问到的知识点如下:

  • 索引相关的,例如索引的数据结构B+树,如何创建高效的索引,哪些情况下索引会失效等。
  • 利用explain+SQL语句查看SQL的执行计划,有哪些指标,该如何理解和分析。
  • MySQL主从复制和读写分离的实现。

其他的,事务、锁、并发问题被问到的概率小一些。

B+树
索引下推
锁和事务的并发问题
读写分离
分库分表

Redis

Redis中经常会考察的知识点如下:

  • 缓存穿透、缓存击穿、缓存雪崩
  • 如何删除BigKey
  • 持久化
  • 缓存淘汰策略
  • 主从复制或者哨兵模式
  • 集群,一致性Hash算法
  • 跳表、布隆过滤器

面试题

微服务

spring cloud和spring cloud alibaba都行,要熟悉每个组件的作用,里面最容易被拿来问问题的是限流、熔断、降级相关的知识点,如果你用的是spring cloud的,可以重点熟悉下Hystrix。

Hystrix要点总结
Hystrix详细介绍

分布式系统

分布式系统最经典的就是一致性问题,关于一致性的几个理论要知道。

分布式事务
分布式锁
分布式ID

项目亮点

项目亮点通常有几种提问方式:

  • 你项目中解决的最复杂的问题
  • 你觉得最有挑战性的功能
  • 你有没有解决过某个问题,是怎么解决的

针对这些提问,可以结合自己的业务场景准备一些案例来作答,比如es的优化场景、利用redis缓存app数据并解决缓存失效的各种问题、mysql慢查询优化等等。回答这些问题时,有几个要点:

  1. 一定不能掺和太多业务上的东西进去,否则面试官光理解你的业务场景就要花很长时间,可能最后还没搞懂,然后不欢而散。
  2. 这个问题的答案尽量多跟技术沾边,最好是通用的技术,否则面试官可能没兴趣了解。
  3. 捡要点说,如果怕自己说不清楚,可以提前写下来,然后理解性记忆。

我的几个案例都来自我平时的工作总结:
es性能优化
Java程序内存优化

另外,回答这类问题可以套用STAR法则(Situation Task Action Result)。

场景题/设计题

短链

短链

抢红包

红包

多租户

参考1
参考2

开放性问题

自我介绍

叫什么,毕业于哪个学校,多少年经验,目前就职于哪家公司,公司主要是做啥的,你在公司主要是做啥的,项目特点(web项目?分布式项目?大数据实时分析项目),业余写博客?刷leetcode?写开源项目?

为什么跳槽

不要说公司和同事坏话,也不要抱怨自己工资低。

团队规模

目前人数少的话,可以按照高峰期的说。

如何带团队

每个项目或者功能模块安排一个首要责任人,首要责任人对自己的模块要非常熟悉,负主要责任,然后每个功能模块至少要有两个人熟悉,这样一个人请假或者离职的时候还能够替补上。

表现优异的要在绩效考核上给与正面回馈,表现不好的要及时沟通和了解情况。

定期组织技术分享,可以分享学习心得、解决问题的经验等等,这样每个人都会觉得自己一直在进步,有成就感。

对团队成员要友善,以鼓励为主,工作上有困难要及时沟通和提供帮助。

一般公司都有活动经费,平时多聚聚餐,定期组织活动,比如打羽毛球、篮球等,培养团队感情,增加凝聚力。

公司有福利的话,力所能及的帮团队成员争取。

如何看待加班

每家公司都有临时的突发事件或工作量繁重的重大项目,这个时候加班很正常,偶尔这样不要紧,能够接受。

职业规划

所面试的岗位技术含量高,就说追求技术。所面试的岗位偏业务,就说追求业务。

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐