秋招总结 | 外企互联网求职经验分享(附学习路线及面经)
前言
本人2022届小硕一枚,从研一开始就混迹于牛客,可以说牛客伴随着我从求职准备到找实习再到秋招的全过程。也正是得益于牛客上的许多经验帖、总结贴以及面经的帮助,让我在2021年的秋招中拿到了如下offer,现在该到自己回馈牛客的时候了。这篇帖子包含如下三个方面内容:
- offer求比较
- 求职准备
- 面经分享
1.offer情况
目前拿到了如下几家的意向书或OC,岗位均是软件开发或Java开发或后端开发,希望各位牛友们给些中肯建议,非常感谢!
- 微软M365,暑期实习转正,base苏州
- 华泰证券信息技术部,base南京
- 华为,车BU智能座舱产品部,base南京(八月初收到过FX计划通过的短信,不过目前好像仍在泡池子)
- 字节跳动,基础架构,base南京
- 蚂蚁,智能引擎与数据中台技术事业部,base杭州
- 网易,杭研院,base杭州
- TP-Link,ssp,base杭州,做的是安防相关(目前唯一一个开奖的)
2.求职准备:
刷题
因为从研一开始就有去外企工作的想法,而大多数外企都将算法作为面试考察的主要内容。所以我在准备阶段花了大量的时间和精力在算法题的训练上。在刷题前我先按照时间顺序做了如下的准备:
- 阅读《算法(第四版)》
- 阅读《剑指offer》
- 看左程云的算法课(基础班+进阶班)
做完这几件事之后就正式开始了我的Leetcode刷题之旅,我一直觉得算法题的手感是一个用进废退的东西,养成每天做题的习惯才能避免手生。因此从去年四月份开始训练,一直到今年九月初,一年半下来坚持刷了700多道题,并且在几个主要的时间节点(找实习前、秋招前、实习转正前)还对一些常见题(Hot100和CodeTop上的题)进行了反复练习。 此外,我在学习和练习期间也将一些常见算法的解题思路进行了归纳整理,也曾写了多篇题解发布到自己的个人博客上。
经过这一系列算法题的训练,一方面在面试时可以对一些常见的题目类型条件反射般地快速想出思路(比如最短路径问题想到BFS,无后效性问题想到DP),另一方面也提升了自己的coding能力。面试时再注意一些沟通技巧、代码规范等,算法这一关基本就可以了。
看书
在开始刷题的同时我也开始了基础知识(八股文)的学习,因为相较于看视频,我更喜欢看书的学习方式,因此这一方面的知识主要来源于看如下书籍(有些书籍只选看了一些重点章节):
- 操作系统:《现代操作系统》、《鸟哥的Linux私房菜》
- 计算机网络:《计算机网络:自顶向下方法》、《图解HTTP》
- 算法与数据结构:《算法(第四版)》、《剑指Offer》
- 数据库:《MySQL必知必会》、《MySQL技术内幕 InnoDB存储引擎》、《Redis设计与实现》
- Java:《Java核心技术》、《深入理解Java虚拟机》
- 设计模式:《Head First设计模式》
我是从去年四月份开始看这些书的,等到都看完也到了今年年初了,距离暑期实习招聘提前批只有一个月多一点的时间了,这时发现好多曾经看过的知识点因为隔了很长时间已经想不起来具体的内容了,但好在这时对面试可能考察的内容已经有了自己的一套知识体系。之后再配合Cyc2018和JavaGuide等整理好的八股文复习一下就进入了面试状态。
项目
项目这块我一直比较虚,因为本硕都是学通信的,在实验室做的也是网络相关的科研项目,与开发岗位的职位匹配度不大。因此我在找实习前用Spring做过一个个人博客的项目,但发现面试时候面试官总会由此引申到很多我不会的Spring原理,我只能回答说只学着使用了Spring而没怎么深入了解原理,每当这时都觉得有点尴尬。
因此在四月找完实习后我就把这个项目从简历上删掉了,做了个RPC的项目取而代之,这才好了一些。并且在秋招提前批的时候因为已经暑期实习入职了,有了实习项目可以讲。这才在简历上把项目这块充实了起来。
3. 面经分享
找实习阶段的部分面经可见此贴:阿里五面+微软两面实习面经+offer比较
TP-Link
一面(6.16)
- 自我介绍
- java里final关键字的作用
- 单向链表怎么判断有没有环
- 快排的原理
- TCP怎么保证传输可靠性
- 什么是死锁、怎么避免死锁
- 研究生是考研的还是保研的、本科成绩怎么样
- 研究生的研究方向是什么、介绍一下科研工作做的什么、做了多长时间
- 有什么业余爱好
- 现在手头有其他的offer吗
二面(6.18)
- 学过哪些计算机基础课
- 从源代码到目标程序,需要经过哪些步骤。最终生成什么文件,链接在哪一步
- 介绍下TCP和UDP区别
- 为什么说TCP比UDP慢
- 介绍下TCP的三次握手和四次挥手、TIME_WAIT状态的目的是什么、什么时候会进入TIME_WAIT
- 操作系统在什么情况下进行进程调度
- 算法题:爬楼梯(给定n=100,需要考虑大数)
- 算法题:第三大的数(Leetcode414)
三面(6.25)
- 研究生主要研究的课题是什么
- 这个课题全球做的人多吗
- 考研还是保研的,排名多少
- 以后工作会考虑哪些地点
- 计算机、Java课程学过哪些
- Java方向都掌握哪些、Java的框架了解吗
- 使用Java的代码量有多少
- 怎么才能让一个软件系统的开发质量比较高呢
- 有什么业余爱好
- 实验室管的严吗、工作后能适应工作节奏吗
- 对自己以后的职业发展有哪些期待、想达成什么样的成就。
- 对TP这家公司有哪些了解
华为
一面(7.8)
- 算法题:力扣543. 二叉树的直径
- 简单介绍一下你的RPC项目
- 注册中心充当着什么作用,如果挂了会怎么样
- Netty和Java原生Socket有什么区别
- 序列化的时候有没有考虑到中文的情况,介绍下用的序列化方式
- Java怎么判断浮点型的相等,可以直接用==吗,浮点型在计算机中怎么存储的
- 接口和抽象类的区别
- equal和hashCode方法
- Java集合类的初始容量大小
- Volatile 关键字的作用
- 设计模式有了解吗,回答单例模式。
- 看你一直学的是电子,出于什么样的考虑投递了软件开发的岗位
- 在做项目的过程中遇到过哪些问题,后来怎么解决的
- http和https有什么区别,https是怎么实现完整性保护的?https是怎么实现加密的?
二面(7.8)
- 算法题:字符串压缩
- 大学和研究生期间觉得印象深刻的课程
- 大学算法课学了哪些内容
- 说一下对MySQL数据库的理解,用过吗,怎么用的
- 说一下对Redis数据库的理解
- 如果让你选数据库,什么时候用MySQL,什么时候用Redis
- 怎么保证Redis缓存数据的一致性,缓存穿透有什么解决方法
- Spring平时用的多吗,对Spring和SpringBoot有了解吗?
- 聊一下IOC,A依赖于B和C,如果IOC容器把B和C注入到A中,那么A在容器中会有几个实例呢
- 还有了解一些其他的Java开源框架吗?
- 简单介绍下注册中心的作用
- 如果已注册的服务提供者宕机了,注册中心是怎样监控到的呢
- 之前有做过前端页面吗,个人博客项目的页面是怎样做的
- 介绍一下科研项目,具体是怎么做的
主管面(7.14)
没有涉及太多技术问题,主要是聊项目以及个人经历,于是当时就没有记录。
字节跳动
一面(7.18)
- 算法题:给定一个升序数组,求平方后不相等元素的数量
- 算法题:LRU
- RPC流程说一下,怎么注册服务,怎么实现send和receive
- TCP是怎么保证可靠传输的
- 数据库事物是什么,如果提交事物后宕机了怎么办,事物底层实现原理
- 数据库索引是什么,为什么用B+树而不用红黑树
二面(7.20)
- 两个机器之间最多能创建多少条TCP连接
- TCP和UDP的区别,它们是哪一层的协议
- 操作系统怎么维护TCP的连接
- A与C通信,B也与C通信,C怎么分辨这个连接是来自A还是C的
- 什么是二叉搜索树,最坏情况的时间复杂度是什么,实际中怎么避免这个最坏的情况
- 红黑树算是一颗二叉搜索树吗
- 一个操作系统有哪些基本的模块(进程管理、文件管理、内存管理)
- 进程和线程的区别
- 为什么线程比进程切换开销小
- 关系型数据库和非关系型数据库的区别,使用方式有哪些区别
- 介绍一下实习做的事
- 介绍一下RPC项目
- Netty和原生socket有什么区别(回答BIO和NIO的区别)
- 项目中怎么定义的传输协议
- 你做这个项目的动力在哪里,在哪里获取相应知识的
- 算法题:剑指 Offer 67. 把字符串转换成整数
- 你对之后的职业规划有什么考虑
三面(8.5)
- 介绍一下Netty的IO模型
- 在Java中降低线程启动时间用什么方法
- 平时多线程写的多吗,线程同步的问题遇到过吗
- ThreadLocal怎么用,有哪些坑知道吗
- JSON、Kryo、Hessian三种序列化方式效率是什么样的呢
- 内存管理采用什么方式,怎么调JVM了解吗
- 三个线程,线程A只能打印"a",线程B只能打印"b",线程C只能打印"c",想要连续打印"abc"一万次怎么做
- 平时对Linux使用的多吗,来讲一些Linux命令
- 除了内建的数据结构之外,有自己实现过HashMap、红黑树、B+树这些吗
- 单向链表怎么进行快速排序
- 算法题:实现一个函数,去掉一个字符串中出现次数最多的字符
华泰证券
一面(7.27)
- 要做一个RPC框架需要考虑哪些内容
- 除了Nacos还有哪些注册中心的备选,Dubbo注册中心用的哪个
- 介绍你用的三种序列化方式的不同
- 怎么保证注册中心上信息的正确性和时效性
- 轮询法负载均衡是怎么实现的
- 如果有10台服务器,想让其中一台服务器的流量调高一些,该怎么做。
- 服务端想要限流,想实现每秒钟最多只接收100个请求,该怎么做
- Java的深拷贝和浅拷贝的区别,怎么实现一个深拷贝
- 线程池了解吗,在Java中怎么创建一个线程池,可以创建几种线程池,线程池有哪些参数
- 阻塞队列有哪几种实现方式,阻塞队列都有什么特性
- 项目是用Maven管理的吗,Maven有几个过程
- 你的知识主要是从哪些途径获得的
- 说几个Java的运行时异常
课题考察(8.19)
一道股票问题的变种,要求在一个周末完成并做PPT参加课题答辩,如果在leetcode上做过股票问题系列题目的话应该问题不大。
HR面(8.30)
- 讲一下你对这次课题考察的理解和个人的评价,你觉得成果怎么样,如果多一点时间的话你还想怎么做
- 你认为你应聘这个岗位的优势在哪,怎么证明
- 你怎么看待科技在金融行业的落地场景
- 在做第一份工作的选择时看重哪些因素
网易
一面(8.20)
- 介绍下HTTP和HTTPS的区别
- 为什么非对称密钥加密的效率比较差
- 为什么要有证书的颁发者,怎么去认证,怎么保证证书的归属。有在实践中应用过吗
- TCP的四次挥手
- Cookie是什么,客户端可以设置Cookie吗。Cookie可以脱离Sesion使用吗
- 说一下你对Java了解哪些(我讲的JVM)
- 垃圾回收算法的优化方向有哪些
- 并行和并发的区别
二面(9.2)
- 介绍一下实习项目
- 工作中遇到了什么问题
- JVM都包含哪些部分,创建一个字符串的话,它应该放到哪个区
- 给对象分配一个内存时,怎么来确定它在堆中的存放位置
- Java中对象一定是在堆中分配吗
- 现在实习时团队协作是个什么样的节奏,涉及上下游的对接吗
- 微服务是按照什么维度拆分的呢
- 除了微服务之外,还用过其他的中间件吗
- 讲一下数据库索引,为什么不用红黑树
- 红黑树在Java中还有什么地方用到
- 在JDK1.8中对rehash过程有什么改进
- 数据库的事务隔离级别,可重复读是怎么实现的
- 在设置主键的时候用什么类型,用字符串可以吗
- MQ用过吗
- 线程和进程的区别
- 怎么创建线程
- 子线程中的异常可以传回父线程吗
- ThreadLocal了解吗,子线程能拿到父线程创建的ThreadLocal吗
- Volatile一般会用在什么地方
HR面(9.7)
- 你们专业都学过哪些课程
- 为什么本科毕业后没有选择去计算机学院读研
- 在学习和工作中遇到过什么难题,怎么解决的
- 本科成绩排名怎么样
- 在工作中遇到过的能证明你有创新性的案例,这期间遇到过哪些比较难的问题
- 生活中有什么爱好
- 平时喜欢看什么书
- 目前面了哪些公司,如果目前这些公司都给你发offer,你会怎么选
- 你对网易怎么看
微软
由于是实习转正,所以只经历了AA面(转正面试),上来用英文聊了20分钟然后做了一道算法题结束
- 英文自我介绍
- Why do you want to join Microsoft?
- Why should we have you? Why should we give you an offer?
- What do you know to reduce the resource cost?
- What are your strengths?
- 算法题:力扣1154: 一年中的第几天
蚂蚁
由于找暑期实习时拿了蚂蚁的意向书,所以秋招只需要一轮终面即可,大部门主管和HR一起面,一个小时面完。
技术面:
- 在Java工程方面有哪些实际项目经验,介绍一下
- 负载均衡是怎么做的
- 服务宕机时怎么处理的
- 注册中心挂了怎么办
- 你用的序列化方式是什么
- 你的网络传输协议是什么
- 你的项目中用到了什么设计模式
- 看过Netty的源码
- 看过Spring的源码吗
- 你写RPC项目时有参考一些其他的项目吗(回答说Dubbo),你觉得你写的有超越Dubbo的地方吗,你觉得Dubbo哪里写的好,说三点
- 未来想在技术上的职业定位
- 你觉得什么样的代码算是高质量的代码
- 你觉得代码的可维护性有哪些方面
- 重构你会用什么样的方法或工具
HR面
- 目前也有看其他公司的机会吗,都是什么样的岗位呢
- 有参加校招笔试吗,你觉得难度怎么样
- 你觉得你身边的同学会怎样评价你
- 从小到大你觉得有特别欣赏的人吗
- 遇到过什么困难吗
- 做选择的时候考虑哪些因素
- 你现在的朋友圈里最欣赏的朋友是谁,为什么
- 如果有机会加入蚂蚁,会有什么担心吗
- 在人生经历中有原来不擅长,但后来居上的事情吗
最后给我的个人博客打一个小广告,希望能帮助到大家
#我的秋招总结##面试题目##微软##华为##字节跳动##投票#