笔者在面过 猿辅导,去哪儿,旷视, 陌陌,头条, 阿里, 快手, 美团, 腾讯以后,除了收获一大堆面试问题,还思考到如何成为面试官眼中的”爱技术,爱思考,靠谱,有潜力候选人的”一些”套路”.java
1.八皇后问题
2.求二叉树的最长距离(任意两个节点的路径 中最长的)
3.lru 算法的实现
4.设计一个数据结构 知足 put 和 getMedium(中位数)两个方法.
(时间复杂度分析, getMedium 在常数,n,log n 时间复杂度返回如何实现)
5.rabbitmq 脑裂问题,rabbitmq 延迟队列实现, rabbitmq高可用策略
(由于项目中用到了 rabbitmq 和他们技术选型出现了重叠,问了这个问题)python
思考:mysql
思考:git
1.分布式锁的实现方案比较,为何选择 zookeeper, zookeeper 一致性协议原理
2.一致性 Hash 原理,实现,项目中是如何使用一致性 Hash 的,引入了多少虚拟节点?
3.java synchronized和 AQS的原理,区别github
思考:面试
阿里面试官 虽然不面算法,可是面试考察点全方位打击,从浅入深,揪住不放,直到你不会为止.
是收获最多的面试,也是感觉到本身差距的面试.redis
1.如何在物理机和容器中获取 cpu 核数,如何设置线程数, 如何主动触发 GC
2.一致性 Hash, Hash 的做用, 为何叫一致性 Hash,一致性体如今哪里.
HashMap中还可使用什么方式处理 Hash 冲突
3.线程池参数,优化,原理
4.实现一个功能:
cat /usr/local/*.log|grep tencent
1. 并发 IO
2. 30 s 内必须返回结果算法
思考:spring
腾讯一面面试官考察点很是深刻,要求你具备概括能力.例如分布式中常见的负载策略,
分布式中数据同步备份的常见方案.线程同步的几种方式等等.
并且在你回答以后能继续深刻逼问.
不像其余面试官抛出来问题,他就听你吹. 你能吹多少,他就认为你会多少.sql
3.1 强行总结结论
必定要有条理性的和面试官沟通. 避免东一笤帚,西一扫帚.最好提早想好一些结论,重复几遍.这样面试官可能直接用你的”结论”来 写面试通过,结论,评价等. 说完一件事,最好有条理性的结论,让面试官印象深入. 即便强行 1,2,3的划重点结论也比戛然而止强.
3.2 优雅的中断当前问题,只在检查点退出讨论,响应面试官的中断
当面试官出现了疑问,抛出了问题,中断你的回答,必定不要一味的回答,当即响应,把握本身的节奏,先面试官征求意见,可否把剩下的说完.继续快速的说完,记得总结结论 求同存异,避免争论。
面试官没有你熟悉你的项目,你的经历. 说,听,讨论. 三个阶段都会存在沟通讯息的损失. 给面试官讲清楚, 让他理解,认同你可能很难. 可是若是出现争论,会下降对你的好感,下降沟通效率.因此你有责任及时的终止争论.可使用一下技巧:
简历必定要认真写.面试官抛出的问题中,除了常见的高频面试题,就是简历中你写的东西.要保证简历中写的东西,
透彻理解! 不管写的是了解,仍是精通都要精通. 不然别写
我认为不用写的
1.不熟悉的,仅仅是知晓的.
2.在学校整的东西,没啥知名度就不要写了
3.github 要有,可是我没有被问过github 中的项目
项目经历通常是 面试必问的,重点问的. 因此第一步要优先发掘本身项目中的亮点, 把本身作的工做清晰的写出来.
自我介绍阶段重点介绍应该也是本身的项目经历,这时最好本身提早准备一份演讲稿把本身的项目亮点说出来.
多练几遍.避免不过脑子,黄河决堤式回答,想到哪里说哪里.
java 锁,线程同步,Juc 包.线程池
内存模型,gc 调优
mysql 索引,锁,事务隔离级别.
常见分布式高可用架构 redis, mysql, zk, mq等. 数据同步,数据分片,数据备份等
阿里通常不会问太多算法题.
可是至少一半以上公司都会手撕算法. 把leetcode 各个类型的题都刷十道以上基本没太大问题. hard题通常不会问.
若是本身面试表现很是好,可是由于算法题被刷掉是否是会很遗憾呢?
算法题能扩展一我的的思路,仍是有用的.也锻炼一我的编码能力. 我的建议白板算法用 python 很是简洁.更聚焦解题思路
若是本身面试表现特别好,职位匹配度很是高. 算法题是能够防水的,会挑简单题问. 目的就是 留下你,怕你答不上来,避免尴尬
可是本身面试比较差, 算法题答得特别好,会不会扭转面试结果呢? 基本不会, 手撕算法只是辅助.项目经历和基础面试题是核心.
若是没有面试到 hr,或者 终面面试官没有明确 hr 会联系,我基本都会问. 或者问一下本身的不足. 通常都会告诉本身.
另外, 手撕算法OK,也会被刷掉. 我在陌陌就是 手撕算法很是完美,结果仍是挂了.
不算 hr ,基本都是三轮. 但若是二轮面试官开始扯虚的,和你介绍项目,问你职业规划 也许二面就是终面. 不清楚就问一下面试官.
不行
当面试官逼问项目细节时, 若是平时没有对细节特别熟悉,作事马马虎虎,技术深度不够,例如 技术选型为何这么作,其余方案?优劣势是什么?
若是没有调研,面试时,很快会露出马脚.
若是对项目的总体架构不熟悉,只熟悉本身的模块,也会可能被面试官问到关联的模块,项目若是本身不熟悉,立刻就会支支吾吾.若是你回答,这块不是我负责的,我不太熟悉,就会让面试官对你产生 没有大局观,主动意识不够的狐疑.评价时会被评”只能完成本身模块内的工做,对系统的全局没有了解,主动意识不强.自我驱动意识差”
工做时,可能仅仅聚焦业务,对于项目中应用的技术关注不足. 面试时候就会被面试官揪住.若是当时不思考清晰,而且面试前没有意识到这块技术风险, 就会给面试带来很大风险.美团面试官曾问我,介绍一个你主要负责的 参与方最多,周期最长,最复杂的一个项目如何推动的? 若是平时工做不积极,不主动思考,面试被摊上这么一个问题.基本上哑口无言. (我就目瞪口呆了)
这是必需要作的事情.可是仅仅作到这些还远远不够
例如:
阿里面试官问:gc 为何必定要 stop the world? 通常博客没有给出明确清晰直观的缘由.
一致性 Hash 如何实现? 手撕一下.为何叫一致性 hash,一致性体如今哪里? 通常博客没有.
lru 算法手撕一下. 博客有,看一遍就能手撕了?
redis 和 zk 分布式锁实现如何选型? 各自缺点,优点?项目使用时如何避免缺点带来的负面影响?
如何基于 AQS实现获取锁的公平性非公平性?
面试官甚至给你埋坑,故意说一个错误的,看你可否反驳.
我以前被带坑过, 线程池问题
面试官问:是先到 max size 仍是先添加到阻塞队列?
我说 阻塞队列满了才会继续建立线程到max size
面试官: 是这样吗? 那么若是是无界队列岂不是永远没法到达 max size
我心想: 是啊,有道理,我可能记错了.而后被面试官带偏了.
因此结论是,光看懂记下来,不够,要深入理解.时刻带着问题去学习.问题驱动式学习.
最后你会发现,
过了许久,你印象最深入的仍是本身当初提出来的疑问及其解决思路和答案.