23 届暑期实习面试总结
前言
自 3.31 投递简历以来,有至今没有消息的,有已经挂了,也有拿到 offer 的。真的要早点准备早点投递,有内推就内推,就我头铁直接到处投…… 另外,说话圆滑肯定更讨喜,我的一些反问可能太直接了:(
经过一个多月的战斗(笔试面试),最终我决定去亚马逊实习,很幸运能够从测试转到开发,非常感谢大家的工作与支持。
接下来按一面时间顺序罗列面试记录。
面试记录
京东科技
投递时貌似还没有暑期实习的岗位,应该是日常实习的岗位。体验不好的一点是面试之后查询不到投递信息,邮件询问的反馈是岗位可能不匹配(那也不用清除记录吧……)。
一面
- 自我介绍
- 介绍在项目里都做哪些具体的内容
- 用 Go 做区块链项目,用了哪些包,如何扩展其他的包
- 用 Python 写的链路追踪工具,是否有看过完整的项目,介绍一下
- 用 Java 写的静态分析工具,介绍一下(面试官熟悉 Python)
- OpenStack 组件都有哪些,都是干嘛的,以及组件内部是如何实现的
- 用过 Kolla-Ansible,那它是如何实现的
- Docker 常用命令,例如,如何打包镜像
- Linux 常用指令
- 如何查看占用 80 端口的进程
- 如何杀死 nginx 进程
- 查找包含特定字符串的文件
- 字符串替换
- 如何使用一行命令实现上述功能
- Python 相关的内容
- 基本数据类型、排序操作等
- 如何打包和发布
- 有用 Python 做什么东西
- 装饰器如何实现
- 了解 Nginx 引擎吗,反向代理如何实现
- 介绍一下了解的 Git 指令
- 开源社区贡献
- 如何搭建博客(实际上是想问怎么部署到服务器上)
图森未来
印象深刻,使用内推码投递,一面就是考察做题,当时还没怎么做 leetcode 上的题,结果非常艰难地做完第一题,第二题毫无头绪,后续当然是没有后续了。
一面
- 自我介绍
- 项目相关内容
- 是否参考开源代码
- 遇到的难点,如何解决
- 算法
- 贪心 + 小根堆
- 动态规划
亚马逊
投递了测试(SDET)和开发(SDE)的岗位,收到了测试的笔试,很简单的两道题,次周就约面试了。两轮面试后,通知我需要等待团队匹配,后来得知是原来的团队不缺测试了,但有团队需要开发,兴冲冲地接受了,但需要加面一轮。不过最后还是如愿以偿拿到 offer 了~
一面
- 自我介绍
- 项目相关
- 详细介绍一个项目
- 开发的主要难点
- 应用情况
- 追踪云平台与追踪云平台上的软件的差别(开发难点)
- 遇到的困难与解决
- 算法
- 删除字符串中的所有回文子串
二面(算法)
- 删除倒数第 N 个节点
- 给出一些 testcase
- 设计 Employee 类
- id、name、title、reporter
- 返回手下员工数量
- 找到报告链
三面
- 自我介绍
- 项目
- 区块链项目介绍
- Java 程序分析项目介绍
- 算法
- K个一组翻转链表
- 二叉树右视图(BFS、DFS)
- 项目中遇到的困难与解决
英特尔
接到电话后直接开始电话面,后来线下面发现是二面的面试官打的电话。线下面来到环球贸易中心的办公室,面试地点应该是一个小讨论间,一路走来感觉略沉闷……?可能这就是老牌公司的沉稳。两轮技术面,因为 boss 没空所以没有第三轮,不过后来我也没接到通知。
电话面
- 项目
- 对云计算的理解
- 为什么用 Jaeger
- 算法
- 最小深度
- 最左侧的最小深度
- 八股
- 进程与线程
- 程序内存如何分配(进程堆栈都分配什么)
- TCP/IP 三次握手
- Golang 中的协程
- Linux 中常用的指令
- Linux 系统中查看磁盘占用情况
一面
- 算法(30min):2基础 + 2提升
- 找出第 k 大的数字
- 删除字符串中相邻的相同字符,重复操作,返回结果字符串
- 二叉树,到叶节点路径和为 k 的路径
- 不含重复元素的数组,找出和为 k 的元素对(集合)
- 项目相关
- 创建 VM 的组件交互
- 还记得哪些交互
- 如何收集信息
- 信息如何传递(调用什么接口、怎么调用)
- 负责开发哪部分,举例说明
- Linux 常用操作有哪些
- 操作系统管理的资源
- 硬件相关:主板、插槽、USB、总线
- 如何实现资源共享(互斥、锁的种类)
- 进程间通信都有哪些方式
- 学过哪些课程
- 对称加密、非对称加密
- 为什么一把加密一把解密(原理)
- PKI
- 读过 Unix 编程吗(好书)
二面
- 上一位是否考察英文
- 英文如何
- 英文谈谈对 Infrastructure 的理解
- 重点是资源虚拟化、分布式其次
- 上一位考察了哪些内容
- 用过哪些 Docker 指令,主要用 docker 做什么
- 介绍一下目前在做的 Java 项目
- 一些 Java 相关问题(完全不会)
- 学过哪些课程,喜欢什么
- 有考虑内核方向吗,刚喜欢偏下层还是偏上层的(结果认为我喜欢应用开发……)
- 为什么觉得北邮的课程水
- 保研还是考研
- 谈谈自己的优势
- 工作规划
- 了解 k8s 的什么
- 为什么来英特尔
- 反问
- 为什么想要 transfer
- 刷题是为了干嘛
6.2 收到 Intern 的笔试通知(看了下记录是 4.16 投递的,要求使用腾讯会议笔试,并将答案拍照发邮件),然后 6.11 才想起来这是 6.8 的笔试,whatever
美团
当时对 Java 还不是很熟悉,硬生生面了一个小时。先是美团配送两轮面试,然后立马被另一个微信小程序的团队捞起一面,也没有后续了。
一面
- 自我介绍
- Java 技术栈(不匹配,问点别的)
- 数据库
- ACID 属性
- 举个例子,都对应哪些属性
- 计算机网络
- TCP 和 UDP 的区别
- TCP 相关机制:确认、重传、拥塞控制
- 操作系统
- 进程和线程的区别
- 情境描述
- 如何设计好一个接口
- 请求调用非常慢,如何排查/优化
- 项目中遇到的难题与解决,再次遇到是否会加快处理速度
二面
- 自我介绍
- 项目
- 区块链
- 用来做什么
- 用什么机制,工作量证明?
- 主要负责什么内容
- 如何拿到 OTP(节点入网)
- 单向 TLS 是什么
- CA 的作用
- 链路追踪
- 介绍
- 追踪数据如何传递
- 进程-线程-元数据
- ES 使用哪种分页
- 多机部署如果有台主机挂了怎么办,追踪链路断开?
- 如何保证性能
- 区块链
- 对什么语言比较熟
- Python 底层的垃圾回收机制
- 用过哪些数据库,了解到什么地步
- MySQL 数据库隔离级别,分别解决哪些问题
- 对称加密和非对称加密的区别
- TLS 如何建立连接(单向、双向),对称密钥?非对称密钥?
- 如何验证证书链
- 算法
- 二叉树上视图
一面
- 自我介绍
- 项目相关
- CA 架构
- 链路追踪如何实现,负责哪些部分
- Java 程序分析系统如何实现
- 遇到的问题与解决
- ES 相关问题
- 数据库
- 隔离级别
- 并发错误
- MVCC
- 如何预防幻读
- 索引类型
- 索引底层实现
- 索引优缺点
- 锁
- 计算机网络
- 协议对应哪层(HTTP、TCP)
- TCP 与 UDP
- TCP 如何确保可靠
- TCP 其他机制(流量控制、拥塞控制)
- HTTP 与 HTTPS
- Java 数据类型
- 字典和集合的区别与实现
- 10 亿数据搜索 top10 如何实现
- 回答堆,堆的底层实现
- 看源码时注意什么,是否学习写法
- 算法
- 无重复字符的最长子串
百度
面我的团队只要会 C++ 的,所以没有三连面,直接一面挂。
一面
- 自我介绍
- 项目中遇到的难点
- 进程线程区别
- 锁(互斥、共享)
- TCP 在哪一层
- Linux 查看文本的操作
- shell 如何运行指令
- 做过多线程编程吗
- 算法
- 合并两个有序数组
- 实现拷贝函数
char* memcopy(char* source, char* dest, int n)
考虑地址重叠的情况
特斯拉
面试很水,三面体验极差,9 分钟的面试真是让我开了眼了。问想留在特斯拉还是积累经验,就不该诚实回答积累经验,英文问题很突然,既然是重点考察内容就该放在一面……
一面
- 自我介绍
- 链路追踪
- 对云平台还是对云平台之上的软件追踪
- 各个组件的作用
- 创建虚拟机的组件交互
- 追踪的数据是什么
- 能用来做什么,是否做过实际的性能调优,瓶颈检查
- 虚拟机网络和主机网络的区别
- 遇到的困难与解决
- 讲一下 Kolla-Ansible
- Java 程序分析系统
- 简单介绍
- 区块链
- 负责哪些内容
- 容器化
- 对 Devops 的理解
二面
- 自我介绍
- 项目相关内容
- 公有云私有云的运维愿意做哪个(AWS、AZure)
- 为什么选择特斯拉这个车企
- 接触的编程语言中觉得哪个最好
三面
- 做过哪些和岗位相关的工作内容
- 对 CI/CD 的理解
- 接触过 jerkins、prometheus、grafana 之类的吗
- 项目中遇到的困难与解决
- 有意愿留在特斯拉吗,还是来积累经验
- 英文
- Why Telsa
- Benefit of microservice
联想
安全实验室,一面有三五个面试官,一面过了就拿到 offer 了。
一面
- 自我介绍
- Java 程序分析系统
- 具体是怎么做的
- 能够检测什么
- 如何抽象
- 静态分析是做什么,污点追踪
- 介绍一下 Soot 框架
- 区块链中负责哪些内容
- 接触过一些逆向的东西吗(WinDbg、IDA)
FreeWheel
在看起来很像盗版网站的官网投递,没法查询投递记录,笔试时选择部门意向。二面的面试官不会算法的样子,问思路就是不知道,反问我要不换道题……
一面
- 进程与线程
- 为什么要线程(分页)
- 什么叫无状态
- HTTP 1.0、2.0 区别
- HTTP Method
- HTTP 如何保持连接
- POST 和 GET 区别
- Session 和 Cookie
- ACID、隔离级别、并发一致性问题
- MySQL 引擎与区别
- 算法
- 判断图是否连通
二面
- 项目中遇到的问题与解决
- HTTP 是无状态的吗,如何变成有状态
- 用过哪些 python 框架、java 框架
- 用过哪些数据库
- MySQL 索引都有哪些
- 算法
- 子序列
- 编辑距离
字节跳动
一面考察比较全面,项目八股算法;二面体验极差,算法不会就换题,提问没有反馈没有 hint,非要写链表快排,体验就像是面对一个随机出题的题库,剩余时间让我介绍一下项目。看来字节面试真的看运气,遇到这种……我当时就该问面试官会不会写。
一面
- 自我介绍
- Java 程序分析系统是怎样的,做到哪里了
- go、python、java 之间的区别/特性
- 用过哪些数据库,区别和各自的使用场景
- 数据库隔离级别都解决哪些并发错误、多版本并发控制
- HTTP Method
- 作用
- 安全性
- 幂等
- 比较 GET 和 POST
- HTTP 与 HTTPS
- 如何建立 TLS
- 安全隐患:中间人攻击,展开,如何伪装中间人
- 数据库隔离级别、并发错误、多版本并发控制
- 索引
- 对什么列建立索引
- 索引类型
- 索引的优缺点
- 算法
- 棋盘问题,下棋(全放满),谁的连通块面积最大就赢了
- 扩展,如果算正方形面积呢
二面
- 自我介绍
- 三次握手
- 四次挥手
- 状态
- 线程独占资源
- 线程挂掉影响进程吗
- MySQL 索引实现方式
- 为什么用 B+ 树
- HTTP 1.0、2.0、3.0
- 算法
- 读写者
- 图判环
- 链表快排
- 链路追踪如何实现
腾讯
投递的时候已经错过了笔试时间,所以接到面试通知还是很惊讶的,好像是腾讯云的北京团队,做混沌工程的,面试官应该是做 research 的,还问我发表论文与否。
一面
- 自我介绍
- 项目相关
- Java 分析系统与现有分析工具的区别;复现的论文是什么会议,效果如何;白盒自动化
- 链路追踪系统整体介绍,难题与解决;了解其他链路追踪工具吗;如何测试,性能影响;给漏洞挖掘辅助
- 项目是否有发论文
- 编程语言(go、python、java 都接触过)
- Docker 如何选择基础镜像,减小容器体积
- 有写过单元测试吗,考虑代码质量吗
- 算法
- 滑动窗口最大值
总结
实际上我投递了有 30+ 公司,基本都没有内推,有些直接挂掉了简历,有些至今没有消息,相对来说我投递得还是比较晚的。为了能够拿到 offer 而反复阅读和刷题真的挺消磨心智的……,想学的东西不得不延后,最好的情况是工作和自己的兴趣恰好有交叉(个人看法),23 届加油!