最近看了看外面的机会,特此汇总下,希望对读者有帮助。
战况
- 贝壳:一轮技术面,自挂东南枝。
- 脉脉:两轮技术面,自挂东南枝。
- 跟谁学:三轮技术面 一轮 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:写的有点絮叨,希望可以帮助到读者,如果有任何疑问可以直接加我微信详谈。