最近看了看外面的机会,特此汇总下,希望对读者有帮助。
战况
贝壳:一轮技术面,自挂东南枝。
脉脉:两轮技术面,自挂东南枝。
跟谁学:三轮技术面 + 一轮 HR 面。
搜狐:三轮技术面 + 一轮 HR 面。
小米:三轮技术面 + 一轮 HR 面。
百度:同部门不同小组两个一轮技术面,自挂东南枝。
美团:两个部门各自两轮技术面跟一轮HR面。
字节:三轮技术面,自挂东南枝。
快手:三轮技术面 + 一轮 HR 面。
总体周期在 4.15 ~ 5.15
,中间还包含了个五一假期。看机会原因是好久没挪窝了,想再提高下自己的技能跟待遇,我自己是个焦虑患者,所以不想面试周期太长,本次面试原则就是主攻周期较快
的公司。
个人简介
教育情况:本硕双非学校,自动化 + 控制理论与控制工程,非正规CS军。
目前情况:就职于北京某互金公司研究院,做过AI,目前主要是大数据 + Java开发。
之前面经:这是第二次跳槽,上一次跳槽还要追溯到17年,当时只拿了个JD offer,但当时感觉AI是大方向就来到了目前的公司,像
BATTMD
都没有收到面试邀请。
注意点
刷题:LeetCode中文网 + 牛客网 + 袁厨的算法小屋 + 微软小胖哥 的 codetop :https://codetop.cc,面试时大部分都是牛客网Coding。
简历:勿写错别字,项目描述要有条理,可以突出自己的工作重点,可以提前自我演练下,确保语言流畅,简历上的技能慎重写!写上一个技能就起码要能讲出个123来。
复盘:面完记得及时复盘,记录下面试官的考察点,其实面试挺好好玩的,因为根据你的工作年龄跟履历,大厂大概率会找个能包容到你知识点的人来面试你,所以珍惜能提升自己技能的机会!
准备:别上来直接冲目标公司,先面几个公司熟悉下套路跟技能,虽然不太厚道吧,不过本来都是双向备胎的关系,大厂为什么周期那么长,道理你我都懂。
周期:自己把握周期,面试完及时找猎头或者HR咨询面试结果,不要恋战!这家不行的话,直接冲下一家即可。
面评:
慎重投递自己心仪公司
,大公司在技术面试跟HR面试时都会实时写面评来记录你的面试表现,如果你第一轮轮技术挂了,别的部门捞你,都会谨慎很多。
面经
1. 贝壳
一面
LeetCode 199,二叉树右视图。
Dubbo 跟 Spring Cloud 区别,自己从宏观到细节简单对比着说下。
限流算法中的令牌跟漏斗区别。Zuul 作用。
项目细节讲解,流程图,瓶颈在哪儿。
开发人员写出死循环,发布上线后如何查出此问题来。
QPS,如何压测,性能测试,性能指标。
性能优化经验,聊一聊。
线程池说下,如果一堆线程任务有20%概率失败,如何保证100% 成功。
职业抉择,算法工作为什么转到知识图谱工程了。
目前应聘的岗位是纯Cloud开发,你的劣势。
关于图数据库的不同种类了解及对比,比如Neo4j、DGraph、GanusGraph。
方向不匹配,凉。
2. 跟谁学
一面
LeetCode 662.二叉树最长直径。
秒杀场景设计,逐步引导设计思路。
项目的细节探讨及框架流程图,如果项目数据量、并发度扩大十倍咋办,哪儿块是性能瓶颈。
消息中间件,如何保证消息不丢失,如何实现消息消费顺序性。Kafka为什么那么快,Kafka重平衡问题。
非toC岗位到toC岗位的心态切换,抗压能力。
SpringCloud那套东西的压力感。
二面
MySQL理解,事务隔离级别,MVCC,三个日志文件作用。
现在做的东西的数据并发量跟业务复杂度探讨。
自我讲解个满意项目,项目亮点。
操作系统中的阻塞、非阻塞、同步、异步、BIO、NIO、AIO细节。
日常如何自我学习。
LeetCode 215 TOP K。
三面
项目介绍,面试官挺忙的,没咋问项目细节。
Redis跟MySQL缓存一致性。
你对Dubbo底层理解。
你对DDD的理解。
3. 搜狐
一面
MapJoin 是什么?
Hive 数据倾斜 咋办?
cluster by order by reduce by distribute by区别。
Kafka 为何那么快。
MySQL B树 B+树区别。
UDF、Spark、Netty、BIO、NIO、AIO框架。
LeetCode 103. 二叉树的锯齿形层序遍历。
二面
项目介绍,框架流程图,自己负责的部分,数据治理的理解及实战场景。
MapReduce流程, Shuffle过程细节,数据倾斜如何避免。
hive语句书写,开窗函数的考察。
ZooKeeper的理解,分布式事务2PC、3PC、TCC、Paxos实现思路及优缺点。
自己项目介绍,简单了解下职业规划等东西。
LeetCode 5. 最长回文子串。
三面
项目介绍,负责模块。
HBase架构图,LSM理解。
Spark在工作中的应用细节。
Scala语言的熟悉程度,Scala跟Java的区别关系。
你所应聘的岗位主要职责。
4. 脉脉
一面
MySQL 优化 查询 如何优化这些操作。
MySQL的 ACID理解,如何保证的,MySQL底层架构是啥。
Redis的几个基本数据类型,底层实现。
RabbitMQ 工作的几种不同模式,数据如何保证顺序性跟不丢失,如何避免数据重复消费。
Linux 常见指令(说点高级指令比如tmux,awk,别扯 ls、cd)。
MySQL为什么不建议用Text。
MySQL limit 10W,10 这样的优化,覆盖索引的使用。
Linux CPU满负荷如何排查。
1. top -c 显示进程列表
2. 键入大写P 按照CPU使用率看进程, 比如找到了进程PID = 10765
3. top -Hp 10765 显示进程中线程列表
4. 键入大写P 线程按照CPU使用率排序,比如找到线程PID = 10804
5. 将进程PID 10804 转化为16进制 printf "%x" 10804 2a34
6. jstack 10765 | grep '0x2a34' -C9 # -C是匹配行和它前后各n行
7. 找到 耗CPU高的线程对应线程名字 以及在干什么
9. 链表是否有环, 如何找到交点,计算出环的大小。
10. 一个字符串中的最长无重复子串。
11. 一个帖子 来回回复如何存储,如何设计。
二面
一个数组包含10W个数据,数据范围都在0~100,请求出两数相加和为100的情况一共多少种。
分布式锁实现方案。
Redis为什么那么快,Redis底层实现。
RabbitMQ 中的TTL。
Redis中常见集群部署情况,出现性能问题如何排查。
纯Python后端开发岗位是否接受,你到目前待遇跟期望待遇。
5. 小米
一面
两个字符串求最长公共子序列,最长子串。输出字符串结果的那种。
Hbase的理解,LSM演变过程。
项目介绍,数据治理方面的理解。
简单SQL语句考察,MySQL各种索引跟如何优化。
Kafka 重平衡,Kafka架构图的理解,读写流程。
二面
LeetCode TOP K 。
项目介绍,瓶颈延伸,自我复盘。
你对Spring的理解,循环依赖。
不停机修改MySQL一个字段,如何对MySQL进行服务器扩容。
RabbitMQ 如何保证消息不丢失,如何保证消息顺序性。
1G内存,1T文件,想找到出现次数第二大的字符串。
进程间通信几种方式,每种方式的优劣性。
三面
项目介绍。
过往算法工作的项目讲解,李航统计学习、西瓜书、机器学习实战的学习心得。
地球上所有湖泊跟大海的体积如何求?大学数学建模大赛相关信息。
内核态跟用户态的理解,操作系统的几个核心点及调度算法。
实现字符串语句翻转比如 I LOVE C++ 变为 C++ LOVE I。
岗位职责要求。
6. 百度
一面
TCP 阻塞如何解决。
Python 中的GIL理解。
Flask生产环境如何配置,Session 检验。
Python中继承特性。
Java HashMap 7 跟 8 的流程设计理念,为什么7中会出现环。
Java 线程池参数。
Synchronized 的理解。
ReentrentLock 优势跟用法。
公平锁跟 非公平锁 的理解。如何抉择用哪个。
Redis中的事务。
Redis中的zset底层。
Redis IO多路复用机制。
Kafka 为什么那么快,消费者组的理解,Kafka的重平衡。
MySQL隔离级别,MVCC理解。
最近最有挑战性的项目。
Spring AOP 的理解,实现原理,String字符串拼接成目标类然后通过反射出所需class。
LeetCode 572,判断 一个二叉树在另外一个二叉树中。
告知不太匹配,但面试时感觉聊的挺融洽的,感觉被刷KPI了。
一面
二叉树左右节点互换,自己写出求解过程及测试用例。
区间合并,自己写出求解过程及测试用例。
多个链表进行合并,自己写出求解过程及测试用例。
HBase底层架构组成,LSM理解。
Clickhouse跟Spark的理解。
面试官全程没开视频,错误的以为我只有一年工作经验。
告知不太匹配,再一次感觉被刷KPI ,爱消失了。
7. 美团
一面
图数据的引擎了解么,简单聊一聊,Dgraph,JanusGraph。
聊下项目,项目的技术难点。
你对高并发的理解。
二叉树转换为双向链表,剑指offer 36 。
JVM 垃圾回收器 聊一聊,CMS 优缺点,三色标记法过程细节,G1的优缺点跟实现过程 。
HashMap 跟 ConcurrentHashMap 区别跟细节实现,线程不安全在哪里?
Hive底层执行流程了解么。
二面
燕京大学跟你们学校啥关系。
进程A操作变量x,然后报变量地址写入磁盘,进程B是否可以操作。
类似360开机打败全国多少那种设计,正态分布。定期更新模型核心参数。
TCP 知识点考察。
前端请求从发出到最终得到响应,整个数据的流转过程。
设计一个数据结构支持O(1)的insert、remove、random。
一面
由于上一次的二面面试官认为岗位不太匹配,所以被内推到了另外一个部门面试,估计前面的2轮面评还不错,所以这次竟然没有3面。
个人介绍,项目架构图,自我感觉项目难点,现在再让你重新做这个项目你会有什么修改跟调整。
项目数据细节问题。
RabbitMQ 跟 Kafka 对比下,说下对MQ的理解。
mmap java里怎么实现的,ZeroCopy的演变历程。
在线服务如何保证稳定性,感觉又关联到了高并发的理解上了。
常用的负载均衡算法,自己选择个负载均衡算法来实现并进行自测。
Dubbo 跟 Spring Cloud 开发的区别跟理解。
常用限流方法,自己咋实现。
分布式链路追踪的实现跟理解。
二面
个人介绍,你对数据治理的理解。
平常如何提升自己,你对JUC的理解。
对以前做的AI项目简单讲解下,你负责哪块。
你目前手头offer,你的面试计划跟安排是啥。
对于数据治理的理解,Java开发 + 大数据开发 + BI 报表 + 推荐搜索,整个数据流转的过程的认知。
8. 字节
一面
项目介绍,你负责的模块,技术难点。
Kafka为什么那么快,Kafka重平衡咋处理的。
HTTP的发展史理解优缺点,公钥、私钥理解跟加密过程。
操作系统内存、进程、IO、文件管理的理解,自己大致说下理解。
Leetcode 8.atoi ,注意边界问题。
二面
项目介绍,求职岗位的工作内容描述。
Hive执行底层流程。
Hadoop的发展史,自己说下HDFS、MapReduce、Yarn等组件跟数据流转过程。
Kafka生产者消费者速度不平衡咋办,Kafka重平衡。
Redis跟MySQL那套八股文的知识点。
LeetCode 236. 二叉树的最近公共祖先。
三面
ZooKeeper 的理解。
聊项目,自我评价下项目的技术短板,数据重复消费如何解决。
RabbitMQ 跟 Kafka 聊一聊 宏观 自己说那种。
线程池如何实现参数的动态修改。
Hive执行的底层原理。
字符串消消乐。
整体语言知识体系转go如何?
9. 快手
一面
链表是否存在环,如果存在咋找到入口,如何获得环长度,为什么fast是2步,3 4 5 步行不行?多思考下细节问题。
线程咋打断,interrupt 用法。
LeetCode 124,给定一个非空二叉树,返回最大路径和。
JUC 高频八股文考点。
syn跟Lock对比,如何进行选择性使用呢。
BitMap 统计那些数据出现过,那些没出现过。
还有好几个是场景设计思考的题,当时能说个12,然后面试官会引导你,看你是否能说出个3来。
二面
业务数据处理时数据治理问题,如果规则引擎经常增删如何实现高效的对外服务。
大数据从数据收集到对外提供服务的思维跟理念,数据从MySQL、Redis、MongoDB等各种平台获取到后,如何提供对外服务。如何提供高质量的服务呢?
数据提供服务需要考虑的点,OLAP、OLTP、高性能、高可用、高扩展。
A服务器a,B服务器文件b,如何判断 ab文件是否一致,尽可能的避免来回传输。
MySQL用户数据,如何保证高可用,你对高并发的理解是啥。
数据治理方面的思想idea。
无损降级听过吗。
布隆过滤器的思想,多个布隆过滤器的思想?
服务治理的思考。
10块糖,每次最多3个 如何保证必须赢, n块糖呢?如何保证赢。
三面
你负责的是什么部分,你感觉最大挑战是啥,选个感觉最好的项目说一说。
你对大数据架构体系理解。
fast counter 如何实现 类似 变量 i++那种(没及时沟通,充分理解题意)。最后知道考察的是LongAdder 跟 ThreadLocal。
hive 实现底层 ,开窗函数的考察。
Redis中的常见高频考点。
syn 对象头咋回事,锁升级过程。
调度框架 爬取10万个URL,10万个URL 属于不同的节点, 每个节点有不同的访问频率跟总次数限制,如何实现。
Kafka架构体系说下,自己的理解。Leader自己理解下。
日常学习方式跟思维,如何度过新工作的切换期。
感悟
一面:大部分考察基本Coding能力跟一些八股文,中间穿插着一些小场景问答,而其实开发性的场景问答才是最考察候选人能力的,反正我公众号的八股文内容,面试官几乎都没咋问,也可能面试官认为你工作那么多年了,这些必备点应该会了。
二面:一般都是组长面,面试的时候几乎全程场景设计,中间穿插着一些你对一个知识点的理解,你是否有自己的一套认知体系跟方法论。这玩意咋说呢日常只能是多思考,多总结。
三面:一般都是总监面,考察点几乎都是数据结构的设计,场景设计,你对所用工具的底层实现这些东西,你对这个方向整体对知识体系跟框架对理解,几乎二三面就给你定级了。
交叉面:如果学历不错或者工作时间很久了,或者前面的面试官对你的技术定级有疑问,此时一般会有跨部门的 leader 会跟你交流 battle一番。
周期:阿里跟腾讯的面试周期都40天起步的那种,如果有个阿里或腾讯梦,尽量做好长线战斗的准备,注意调整面试状态,我在面了半个月后,心态崩盘了一次。
待遇:注意回忆下自己在三轮技术面的表现如何,这关系到你的技术定级跟你的期望薪资。
八股文:常见的考察知识点我们都俗称为八股文,这些东西最好可以建立个自己的知识体系,任意说一个知识点你可以进行由点到线、线到面、面到全局的讲解跟思考。日常你可以用cnblog、CSDN、掘金、公众号等平台来梳理知识。
Prcesson绘图 场景设计:这个环节其实是最好玩,也是最考察候选人能力的地方,工作久了,双方都懒得套招了,一般会直接场景聊一聊来看下候选人的实力如何,感觉自己准备的也不充分。我的面经都是在面试后的第二天复盘的,很多场景设计都忘记了。以后多努力了!
积累:日常多积累吧,IT行业跟嵌入式或硬件行业不太一样,更新迭代太快了!要保持
Keep Learning
的状态,思维导图:有个半成品的知识点思维导图,完成了60%多,也是平常自己收集了好多牛人的知识汇总而成的,如果对读者有用的话,可以免费克隆看一看(公众号回复思维导图即可获取链接)。https://www.processon.com/view/5f389dbd5653bb06f2d00cbc#map
End:写的有点絮叨,希望可以帮助到读者,如果有任何疑问可以直接加我微信详谈。