原以为拿了暑期转正实习offer已是终点,原来是起点。。。找工作找了将近一年,终于差不多结束啦~刚开始一个人在北京字节实习,工作压力大,压力一大就深夜想前女友,职业焦虑+情感全盘自我否定;后面秋招又回成都同程实习了,心态已平,这一年也算是成长颇大了。
暑期实习
字节-商业化(已offer)
一面(40分钟)
1.讲讲你的即时通讯项目 发布订阅模式怎么实现的 redis也有topic吗?你确定说的不是消息队列?嗯??? 那redis的topic底层原理怎么实现的——PUBLISH、SUBSCRIBE、PSUBSCRIBE,订阅方式有两种,名字订阅和模式订阅,底层实现分别基于字典(key:频道名,value:订阅者)+链表/字典(key:订阅者,value:模式)实现
2.RPC项目呢,说一说 RPC也实现了ACK?
3.TCP连接过程 HTTP呢?HTTP底层基于TCP,实际就是TCP的连接过程 那你说说websocket呢?同样基于TCP三次握手 面试官说不是想问的
4.HTTPS连接过程?CA证书怎样判断合法性——CA机构根据服务器传过来的信息按照加密算法生成一个hash值并用私钥加密,嵌入数字证书中传给服务端;客户端校验时按照同样的加密算法生成hash,再用浏览器或操作系统内置的公钥解密证书,取出里面的hash,比较两个hash是否相等
5.数组、链表、栈、队列的区别 使用场景
6.那Java中常用的数组/链表结构 ArrayList扩容过程 线程安全的ArrayList怎么办
7.HashMap实现原理 线程安全的map,concurrentHashMap实现原理
8.做过最恶心的算法题,一度怀疑是不想要我故意算法劝退:一道是实现加减乘除带括号的计算器,申请换了另一道题:leetcode 2035:将数组分成两个数组并最小化数组和的差(救命...)
二面(一小时20分钟)
1.讲讲即时通讯项目 这种即时通讯的项目有啥注意的地方
2.发布订阅模式怎么实现的 为什么用redis不用其他
3.消息丢了或者乱序怎么办 ACK,序列号,本地整流 你这个ACK为啥要在应用层上设计
4.谈一下Netty 主要讲了Netty的Reactor模型和零拷贝机制 mmap+write / sendfile 那普通的IO过程是怎样的 你说Netty在应用层上实现了零拷贝,具体怎么实现的
5.再问一个关于IO的问题,Java里的IO以及操作系统里的select、poll、epoll你了解吗 epoll平时用过没,知道是怎么实现的不 没用过,但是简单了解epoll和select的实现原理balabala
6.然后来讲讲RPC吧
7.TCP三次握手四次挥手
8.TCP拥塞控制算法 这里说的比较多,自己拓展了为什么超时重传和快速重传采用不同的恢复算法 流量控制,滑动窗口协议详细说 这里细节存在问题,面试官让下来可以再学习下
9.死锁是什么,怎样解决 银行家算法,事务回滚 这里举例说redis的事务回滚,然后面试官问redis事务回滚怎么实现,这才反应过来redis事务不支持回滚 死锁产生的四个必要条件
10.数据库事务并发问题 怎样解决幻读? 锁住整个表,但效率太低,不推荐;Next Key Lock,间隙锁算法 平时遇到过这些问题没
11.事务隔离级别
12.事务四大特性ACID 分别怎么实现的 这里说的也比较详细,由MVCC原理扩展到了InnoDB可重复读级别的实现
13.写过SQL优化吧,来看一道题 里面有个关键字没看见过,面试官说那我们不做了 欸group by、order by这些你会吗 会的会的 嗯好
14.数据结构学过吧?说说循环队列 直接来写吧 手写循环队列
15.好,再来下一道,给定一个数组和一个数n,求出这个数组里的数字组成的小于n的最大数(数字可重复使用) 开始只能想到枚举,但根本不可能让写枚举,面试官给了点提示最后写了个大概,有点小bug 面试官说大问题没有,没问题。(md,两次字节面试都遇到生僻hard或者原创hard...)
三面(1个小时)
40分钟即时通讯项目+10分钟算法+10分钟场景设计题
项目的问题问的太多了,记不太得了。大概这些:
聊聊你的即时通讯项目
假设让你来设计一个校园即时通讯应用,IM服务器集群哈,你们学校假设现在有两万人,应该怎么设计,考虑哪些问题 高并发数据库压力过大、负载均衡 怎么解决?具体怎样实现? 说了加缓存,面试官深问这种场景下哪些数据要加缓存,凭什么缓存?
假设现在我们有两台机器A和B在互相发消息,中间连接的是不同的IM服务器,这个消息收发过程是怎样的 说了需要IM服务器集群之间同步消息,面试追问这样的话需要注意什么? 结合后面RPC注册中心集群的实现讲了最终一致性,引入消息总线的设计
来看微信案例,我们PC微信端登录时会生成一个二维码要求手机端扫描,手机端扫描完毕后PC端才可以登录成功,请你描述这个过程发生了什么并详细阐述每个过程需要携带哪些信息
你这个项目实现过群聊消息功能吗 哪些点需要注意
写道题:最大连续子数组(2) 返回所有最大子数组
场景设计题:
一个停车场,4*50 大小,汽车只能按行放置
小汽车占一个车位,收费10元
中汽车占两个车位,收费25元
大汽车占三个车位,收费50元
设计方案求最大利润?
类似于OS内存分配,说了思路最后还问能不能写代码出来,实在高看我了哈哈哈
秋招+秋招补录
滴滴-城运(三面挂)
一面(50分钟)
1.实习项目介绍 你负责什么 技术选型为什么是ClickHouse,对比过其他吗 新技术了解多少?
2.30天内数据做增量更新,怎么做的?
3.标签问题,注意什么?
4.ClickHouse为什么快,用clickhouse做过增删改操作吗,想过ClickHouse的弊端吗
5.其他想展示的项目亮点 即时通讯及时性、可靠性、未读数冗余设计
6.TCP三次握手、四次挥手、可靠传输原理 和UDP区别,UDP好处,适用场景
7.Redis的数据类型挑一个说说,底层结构
8.Java NIO、BIO、操作系统IO
9.手写HashMap,实现put、set、size方法。(写的伪代码,没考虑链表/红黑树)
大概这些记不太清,重点在实习项目深挖
二面(35分钟)
1.实习项目......
2.列式数据库一定比行式数据库快?为什么
3.在字节学到了什么 工作中遇到了问题怎么解决 看哪些书 你认为自己性格是怎样的 对技术的认识,未来的职业规划......
二面记得好像就是实习项目+软实力问答
三面(35分钟)
1.实习项目介绍
2.关注哪些技术网站 有了解新技术不
3.JVM垃圾回收相关 被打断
4.看你自己写过线程池,聊聊线程池 注意什么,线程池存在的一个问题,一个线程想使用上一个线程的上下文解决方案?不知道 没关系,确实可能超界了
5.JDK8新特性 除了lambda表达式 本来想一路讲到手撕HashMap,被打断
6.RPC项目里消息总线替代Zookeeper集群?消息总线用啥做的
7.即时通讯用的什么传输协议 序列化协议
剩下的记不太清了 一上午面完三面,难顶
面试官原话:横向对比一下,最晚下周出结果吧,你们今年毕业的确实太难了
开启泡池子......
美团-到店(HR面挂)
美团——面试体验最好的公司之一,面试官说话都好温柔
一面(12.27 一小时)
1.寒暄扯点皮:你在哪儿呢 可以可以,看起来你还没阳,我们这基本全阳了,居家办公两周咯都 之前在字节实习哈?现在在成都同程 那可以啊,酒店业务,刚好和我们对口,我们这主要是酒店门票 准备实习到啥时候,这段时间可以多多在同程学习点东西 最近看过什么书吗 微服务主要学习了啥呢 其实docker这些做开发的话一般用不到 算法刷过多少题,leetcode200+剑指差不多300吧 可以,以后想走算法方向还是业务这边......
2.介绍同程实习做了什么
3.关于Java介绍你最熟悉的部分——Java并发 讲了锁,讲到了ReetrantLock锁底层实现,CAS、AQS Java内存模型,原子性怎么保证,可见性怎么保证,底层原理 Java线程池实现原理 拒绝策略有哪些 volatile关键字
4.字节实习项目 你负责做了什么 怎么没留在字节
5.讲一讲你做的这个RPC框架,核心原理 具体每个部分怎么实现的 这里的回答提到了项目里zookeeper集群的强一致性优化,面试官说就是,我们在ZK这里折腾了好久
6.写道算法 中等题 对你肯定没问题吧
查找算法有哪些 为啥这里可以用二分 那如果有序链表怎么实现二分查找的效果——可以考虑新开辟一个数组空间记录链表位置 限制空间呢?你听过跳表吗 知道,redis里就用到过 redis里哪里?跳表原理
二面(12.28 一小时)
1.之前在字节实习是吧,怎么没转正.......了解了下学校、就业地意向等
2.字节实习项目和基础八股问的问题都比较常规,感觉没啥好写的了,都是以前面试问到过的问题,多多面试呀!!面到最后,面试问题都一个模子....
3.算法:
4.然后又扯了会皮,看什么课外书(还让推荐几本历史类书籍),你觉得自己最大优势是什么,平时的学习路径
HR面(1.4 半小时)
常规问题,感觉自己面试的时候脑子出问题了,问我最喜欢哪座城市我说成都,北京可以考虑;又问你喜欢同程这种躺平氛围还是字节那种,我说我野心不大,喜欢躺平,现在卷确实也是没办法。。。
春招
携程-旅游(至今泡池子)
3.7 携程笔试 》3.15 携程一面 》3.20 二面 》4.1 HR面 》4.4英语测评
一面有点远了,和二面一起写了,想到哪些写哪些
Java和Go你都会是吧,我们来问Java吧
基础:
接口和抽象类区别
Java反射是什么 实现原理
集合接口有哪些 哪些是线程安全的 想要保证线程安全怎么办
HashMap原理 ConcurrentHashMap
垃圾收集算法
进程和线程的区别
ReentrantLock锁实现原理,那CAS是啥
创建线程的方法,线程池用过没 核心参数 流程 你一般怎样创建线程池
事务的四大特性ACID底层实现
Mysql索引分类 结构,为什么是B+树 哪些场景下需要建索引,何如创建更好,有没有索引失效的情况 然后给了一道题问怎么建索引
Redis数据类型,你用过哪些
如何保证数据库和缓存的一致性
Spring你了解吗 说说Spring的Bean...(一面还问了几个Spring的问题,都没答上来)
掌握哪些设计模式 还有吗 工厂模式详细说下,起了什么用,怎么做
项目:
RPC原理,协议头设计 分布式场景下分布式ID如何生成(一二面都问了)
为什么用第三方代理不用JDK自带的
Zookeeper集群和消息总线设计详细说
介绍即时通讯项目,如果改成分布式的,应该要注意哪些问题
实习:
字节实习期间负责做什么 ...然后主要是听我说...什么数据处理逻辑、为什么用CK、倒排索引、列式存储的优势、bitmap类型,都是顺着我准备了的东西问
没问同程实习相关的
一面面试官建议我把简历上写的东西都要会,很多东西忘记了表现不是太好,幸好还是过了 非常感谢! 二面面试官评价比较高:我觉得你思路很清晰,基础也很好,很不错了。
美团-酒旅(二面结束两周挂)
不保证顺序,想到啥写啥
3.24 美团一面(1小时15分钟)
自我介绍
先聊基础:
点开一个微信小程序文章,发生了什么(老生长谈了呀属于)
HashMap实现原理,put过程,线程安全的map实现 为什么用红黑树不用AVL树
synchronized原理 volatile原理
线程池用过吗 核心参数 线程数目怎样设置(CPU密集型和IO密集型) ThreadLocal知道吗
用过哪些设计模式(见我简历上写了单例和代理模式,就问我还有其他吗) 模板方法模式具体举例
Java内存区域 垃圾收集算法 方法区可能出现GC吗 如何决定哪些对象被GC
InnoDB索引结构,为什么是B+树 事务四大特性(持久性这里聊得很深入,我说完缓存区、磁盘顺序IO、有效IO这些之后面试官又拓展了一个啥,没听过的名词)
InnoDB和MyISAM区别 数据库锁的实现原理
Redis用过吗 做过分布式锁吗
数据库和缓存一致性如何保证
操作系统的IO模型 异步IO理解,与信号驱动IO的区别
linux用过吗 常用命令,cat、awk用过吗
介绍下Netty,为什么快(Reactor模型) Netty的零拷贝了解吗?
微服务怎样理解 与XXX区别你怎么理解(没听过的拓展名词)
项目:
介绍你的RPC框架 协议头除了请求ID还有啥,版本号是啥,为什么要有这个
序列化协议用的啥 为啥不用JDK原生序列化
ZooKeeper集群瓶颈的解决详细说
完整的一个RPC集群应该要提供哪些功能,除了网络通信这种 服务发现、服务注册、学习redis集群可用性设计针对服务器集群做监控与自动故障转移,分布式下的负载均衡等
算法:
求根节点到叶子节点数字之和
*******************************************************
本来感觉到这应该差不多结束了(一小时了),写题的时候面试官看到我的博客网站就又问了几个问题:
看你学习过ES(ElasticSearch),你知道XXX吗(又是没听过的名词呜呜)
Kafka、MQ这些用过没,你觉得消息队列主要用来解决什么样的问题
字节实习介绍 数据处理怎么做的,数据存储呢.......
面试官评价:还可以,非常优秀,在我面试过的里面算是比较优秀的。
3.29 美团二面(一小时15分钟)
二面面试官是美团到店酒旅业务部负责人,挖细节,问得非常深入,打断得比较频繁,压迫感十足。看得出来面试官是位Boss大佬
因为一面基础问得很详细,这一面只问了实习(50分钟)+算法(20分钟):
开始让自己介绍字节实习内容,说了两句话就被打断问问题了QAQ
这个项目的目的我还是没有听懂......然后详细解释了一遍 那这个项目具体如何使用的 用户标签怎么计算的 你具体参与了哪些
细节记得吗 列出你说的这两张数据表的字段,是不是时间有点久了,记得哪些写哪些 可能待会还会让你写出操作的SQL ......
看这个项目主要是基于数据分析SQL层面的,Golang在里面起的作用
还有的问题记不清了
接下来问同程实习的内容
酒店内容做什么的 你在其中具体负责了什么 注意主要描述你做的模块,因为我本身也是酒旅这块的负责人,我想要了解的你肯定不知道。讲了OTA重点内容字典化 携程过来的数据究竟是啥你还记得吗 数据落地这是个写操作,为什么加缓存就可以提高性能呢
再来说这个数据迁移的任务 最后怎样确保迁移的数据一定是正确的呢 这个数据不太重要的是吗,丢一两条无所谓那种?具体究竟是什么数据记得吗
再来写道题,先说,这道题有点难,给你最多20分钟,先写,写不完就给我说说思路:
给定一个数组和一个值k,k是滑动窗口的长度,求窗口滑动过程中的中位数,返回中位数数组
面试官评价:实习内容细节时间有点长了有些遗忘是个减分项,但总体交流沟通还是比较流畅。
知乎(面试中)
3.28 知乎一面(40分钟)
面试官超级有礼貌,体验感拉满
说说字节实习经历 为什么用clickhouse 倒排索引原因 hive和clickhouse分别的适用场景
你们的这个项目是交由广告主来筛选标签确定目标用户,为什么不由平台来做这件事,了解产品本身出发来给标签用户推荐 然后问和“啤酒和尿布的故事”类似的XXX算法了解吗
你理解的Java和Go的区别 Go为什么并发安全 什么情况下会出现并发不安全
协程、线程、进程的区别 为什么协程切换开销更小
点击知乎网址到页面渲染的过程 TCP和HTTP的区别 HTTP常见状态码 重定向怎么实现的
做题:大数相加
面试官评价:还可以
快手-商业化(三面挂)
整体面试感觉问得比较深也比较全,算法、设计题都有,感觉面试官们的水平都有点高
不保证顺序,大概印象深刻的问题:
一面 + 二面(各一小时)
Java类加载过程,static变量在哪个阶段赋值的,常量在哪个阶段赋值的 原因
HashMap线程安全吗 底层结构 CurrentHashMap实现 CAS是啥 ABA问题 JDK8以前解决hash冲突为什么要头插
Synchronized原理 锁升级
用Redis做过什么 除了缓存做过其他吗 怎样实现一个redis分布式锁
为什么用缓存,除了考虑数据查询效率更高外还有其他吗 下来再看看这里(我到现在也不知道答案)
MySQL事务命令(寄) 隔离级别 MySQL的隔离级别,会出现幻读问题吗 为什么 间隙锁算法是啥 什么情况下锁级别会到表锁级别,什么时候加上间隙锁
Redis数据结构 map底层实现,什么时候压缩列表什么时候哈希表
Redis持久化方案 集群了解吗 Cluster集群将存储空间分成了多少份(大寄特寄)
TCP粘包和拆包问题怎么解决
AQS实现原理 公平锁和非公平锁怎么做到的
聊项目聊实习
Redis的发布-订阅模式怎么做的 为什么用JDK动态代理 RPC协议头设计 消息总线最终一致性
字节实习项目 OLAP和OLTP分别的适用场景,哪些数据库通常用作OLTP查询 除了Clickhouse还了解其他列式数据库吗 clickhouse架构了解吗
考察数据结构的场景设计:网页的前进和回退实现,一个栈够吗?什么时候栈满,最多回退几次XXXX
算法题一二面各出了一道:
二叉树的最大路径和 合并N个有序链表
三面(一小时)
一道算法设计优化题做了四十分钟 + 20分钟提问
算法题优化:
找到一个数组里的众数集合(存在多个众数) 要求将时间复杂度从O(3n)、O(2n)逐步优化到O(n),空间复杂度尽可能小
Java集合接口,List和Map的扩容机制 说了ArrayList和HashMap的扩容
字节实习项目,主要还是我说
说是半周到一周内出结果,等HR那边横向拉起比较下评分
去哪儿旅行(已offer)
3.25 笔试
4.10 一面 + 二面
4.12 HR面
4.17 电话OC(给的应该是小sp)
4.18 offer
总体面试难度比较简单,最后应该是给的小sp,感觉字节和同程的实习背景应该起了点作用
自我介绍 先聊基础 大概这些记不完
一面(40分钟)
TCP报文结构 可靠传输原理实现 TCP连接为什么是三次握手
Java对象组成 new一个Object对象占多少字节
HTTP状态码 301 302 区别 重定向和转发过程区别
Synchronized可以用在哪里 实现原理 锁升级过程 与Lock锁区别在哪
CAS是啥 可能存在什么问题
阻塞一个线程有哪些方法
创建线程的方式 线程池工作原理 拒绝策略
分布式相关问了些问题,分布式ID,集群节点间通信啊啥的
聊项目:
RPC原理,与其他RPC框架相比,优势和不足 重点讲了RPC协议头的设计 requestId-responseFuture用什么存的,什么时候销毁的
动态代理技术 选型怎么考虑的
介绍下即时通讯项目
websocket与HTTP区别
分布式系统设计要解决哪些点
算法:手写生产者消费者模型
二面(30分钟)
晚上六点多二面的,面试官好像是住宿这边的负责人,全程基本是我在说,感觉没太深入
面试官看见同程的实习经历开玩笑说咱们还是同行啊巴拉巴拉 字节实习了多久,为什么没转正 我看一面基础问得比较多,那我就不问基础了哈
说说字节实习期间的项目以及你在其中贡献了什么 开始聊项目, 项目背景、设计难点、数据怎么分析、倒排、Clickhouse啥的,反正就自己说
同程实习了多久,所在部门做什么的,组织架构你了解吗 你做了什么 对OTA这个行业业务上有什么理解
然后再聊了会项目,就结束了
HR面
比较常规 职业发展规划、对城市有要求吗,你的优缺点,有无其他offer,实习期间做过的项目 问啥时候能出结果,HR说月底 结果过了两个工作日就意向了哈哈