聊聊后端面试那些事
面试到底怎么准备
面试官心里
- 简历必须真实
- 简历上写的最近的项目必须做到熟悉
- 你掌握的技术必须做到知根知底
- 具备做事的能力
- 简历上没有的软技能
- 态度和心态
候选人心里
- 我要刷题 top100?
- 我要准备自我介绍
- 我要熟悉项目
- 我要把数据库相关知识掌握
- 我要把NoSQL相关知识掌握
- 我要把语言层面的知识掌握
- 我要把态度摆端正
PK环节
面试官问你的问题肯定是你要具备的,但是你具体掌握到什么程度就看你造诣有多深,但是如果问你的问题你确实不知道,那么这个时候你去问下周边小伙伴知不知道,如果不知道那么可能是面试官他想知道你知不知道,如果不知道就真诚地说出来,没什么大不了的,但是知道的话又不太了解一定要说不知道!
其次不管面试官是刁难你还是顺从你,你都应该表现出是谦卑的姿态,面试官也是打工的,当然很多面试官都不知道自己是打工的,以为自己是高人,对你不屑一顾,这个时候你一定要冷静的面试完,不要跟他翻白眼。
最后就是你熟悉的知识不要做到一知半解,就是面试官问你你最拿手的知识,你却给面试官一句话总结了,这是不地道的,面试1h,你5s就答完了,剩下的时间你让面试官怎么办?难道多给你出两道hard题让你做?所以这个时候一定要把面试官往你熟悉的领域上引导,多说几句又何妨?
准备阶段
正常面试官问你的问题都是按照既定套路来的,这个套路大致如下:
1. 自我介绍
(XXX)网上有模板。
2. 最近项目介绍
(XXX)网上有模板。
3. 语言介绍
这里拿Go举例
- map的扩容原理
- slice的扩容原理
- chan的原理
- 并发控制技术有哪些
- gmp调度
- 内存分配和垃圾回收
- 性能调优
无非就这几种,你就看你了解吗,不了解回去背下来。
说实话,语言层面你如果一知半解,基本上给面试官的感觉就是你会写,你是初级水平而已,你离我要的候选人的目标差点意思,基本上心里已经把你毙掉了。
4. 数据库原理
这里拿MySQL举例
- 几种日志
- 隔离级别
- mvcc
- 幻读
- 间隙锁 行锁 Next-key Lock
- 索引优化 explain
- 索引类型和区别
- 主从相关
- 分库分表
基本上就这些知识,你如果不清楚,那么工作5年和工作10年你是一丁点都没积累,35岁淘汰的可能就是你了。
5. NoSQL原理
这里拿Redis举例
- redis几种数据类型
- 为什么是单线程
- 如何做持久化
- 大key删除和查询
- 后台线程或者进程有哪些具体做什么
- 主从相关
- Redis Cluster相关
- 脑裂或者鲸群相关
- 缓存击穿 穿透 雪崩
- 缓存使用策略
基本上就这些知识,我在这里重点强调一下,你可以不用它但是你不得不掌握它,不为别的就为和面试官能把这1h聊完,这样你就不用写算法了。
6. 其他组件原理
- kafka相关
- MQ相关
- ES相关
- Nginx
- 其他
就是你起码得熟悉一个组件,比如kafka或者MQ,因为大公司一定在用,所以不要局限在业务中说没有用到就不研究了,这样就大错特错,你得为你的将来负责,而不是成为公司的一颗螺丝钉。
7. 八股文
- 分布式锁
- 1亿个数 找到top100相关等无关痛痒的面试题
- 分布式一致性raft等
- 分布式事务
- 一致性hash
- 其他
这些问题说实话你回答出来就是加分项,你回答不出来也没事,因为基本用不到,所以这些你可以多阅读多积累,这样慢慢就会背下来的。
8. 架构
- 设计一个系统
- 微服务架构
- 监控指标或者SRE相关
- 部署相关
- 流量镜像或者分流
- 链路压测或者灰度流量
- API网管设计
- 服务治理
- 高可靠 高可用 可扩展等
- 集群相关
9. 算法
阿里比较厉害,基本不问算法
其他公司效仿字节都问算法,所以没办法你得多刷题
你今天不刷题,明天面试官就把你刷了。
其实刷题不是让你刷一遍,重点在“刷“,就是一直刷,一直刷,一直刷,直到背下来,不然你刷1000道你还是不会,一定要刷高频题!
小结
总之面试是一场持久战,你起码得好好准备一个月左右,不要断断续续,要1个月持续学习,直到感觉自己背下来了可以上战场了才可以约面试,不然你面试的越多,浪费的时间越多,过不了的机遇越大,你的自信心下降的越厉害,你就越找不到工作,你就越颓废,最后死循环!