之前在别的网站上发过3,4月份找实习的经历,这里在Acwing再贴下,后续补上秋招的面经。
背景
- 本科双非+末流985渣硕
- 算法:无ACM/OI经验,leetcode 500 + (周赛平均前200名)
- 实习:无
投递
- 腾讯wxg ( 4轮技术+ 1轮hr + 1轮技术(hc不够内部转岗到wxg另一个组) ) 挂
- 腾讯csig ( 3轮技术 + 1轮hr ) OC
- 腾讯ieg ( 2轮技术 ) 拒了第二轮面试(技术栈不匹配)
- 美团到店( 3.12第一批笔试:0.45 + 1 + 0.36 + 0.9 + 0.55 2轮技术 ) 无下文
- 携程( 笔试:1 + 1 + 0.7 ) 无下文
- 百度(笔试:1 + 0.7 + 1 ) 拒绝面试(北京好像不允许武汉本地人入京, 枯了)
- 亚马逊 拒绝面试(理由同上)
- 京东 (一面过,准备拒绝, 理由同上)
- 招商银行信用卡中心( 笔试 1 + 1 ) 笔试挂( 2道算法题Ak都挂,感觉很卡学校 (985渣硕被刷))
- 微软( 笔试 0 + 0 + 0 ) 笔试挂( 跟蚂蚁金服的面试冲突了,没有做 )
- 谷歌( 笔试 kickstart19年全打,最好名次前200名,邀请去了A day with google 面试 1轮技术 ) (过了,由于疫情取消今年实习)
- 网易云音乐( 笔试 1 + 1 + 0.6 + 1 2轮技术 + hr面 ) 等待结果
- 华为云( 1 + 0.75 + 0.7 )等待面试
- 蘑菇街( 2轮技术 + 1轮hr )oc
- 阿里消息中台( 提前批2轮技术 ) 挂
- 阿里中间件( 提前批2轮技术 ) 挂
- 蚂蚁金服中间件( 3.20第一批笔试:0.8 + 1 2轮技术 + 1轮hr ) 等待结果(评级可能不高就没交叉面)
- 字节跳动( 笔试:1 + 1 + 0.25 + 1 一面过 ) 等待二面
- 微众银行( 笔试:1 + 1 + 1 ) 无下文
- 滴滴出行( 2轮技术面 ) 无下文( 实习时间不匹配,需要长时间实习 )
- 斗鱼( 笔试: 0.8 + 2轮技术 ) 等待结果
- shopee( 笔试 1 + 0.6 + 0.3 ) 无下文
- 猿辅导( 内推无下文 )
- 虎牙( 内推无下文 )
- 奇安信( 内推无下文 )
- 小米( 内推无下文 )
- paypal( 简历挂 )
- 快手( 简历挂 )
面经
腾讯ieg
(一面)
- Epoll ET/LT的区别( 源码级别 )
- TCP关键字( reuseport reuseaddress这些 )
- nginx了解不(回答了accept锁)
- redis相关( 为什么用跳跃表不用红黑树 )
- C++ 内存分配,虚函数( 我是Java,基本都不会,不过好像不要紧 )
- 进程的内存结构( 我从JVM层面回答的,但是要从linux角度,不会,但是不要紧 )
- C++的内存分配( 我从Netty的pooledbytebuffer的Jemalloc来回答的,答出了伙伴分配 )
- 可重入锁,自旋锁,悲观锁,乐观锁,cas( 从Java角度和数据库锁来回答,面试官希望我从linux来回答 )
(二面)
技术栈不匹配,拒绝面试
腾讯csig
(一面)
- Netty相比NIO来说的优点( 主从Reactor模型+Mpsc队列( 核心思想是异步串行无锁化 ) + 各种组件 )
- Netty做了哪些优化( 空轮询bug + 重写keyset )
- Epoll源码,LT和ET区别( 是否需要重新放回rdlist )
- tomcat/Jetty这些中对兴趣集中的read/write等操作与Netty的不同之处( 这个我没听懂,后来换了个说法,为什么有的网络框架需要将read/write等事件重建线程 )
- 线程上下文切换对Netty线程的影响( 面试官想听的是不要把耗时任务放入Netty线程来处理的原因,从线程上下文角度来回答 )
- 单例模式的实现方式( 枚举模式 )
- Netty的内存分配原理( pooledByteBuffer的源码实现 )( Jemalloc算法的Java实现:FastThreadLocal(确保线程安全) + 伙伴分配算法实现(完全二叉树) + 位图 )
- Netty实现RPC的方式
- Eureka的原理( CAP理论的AP + 保活机制 )
- 从redis集群扯到了raft算法
- spring ioc/aop/声明式事务/springboot的自动装配
(二面)
- TCP三次的整个流程,从UNIX网络编程的角度来回答( Bind(),listen(),accept这些,扯了一点半连接队列 )
- 项目中为什么要使用disruptor框架( 主要是方便构建解密时的消费者链,面试官质疑是为了用而用,确实是= = )
- 分布式ID生成算法( 雪花算法,实现参考的百度的uuid-generator,问什么要参考百度开源的这个,有什么优点,有做过对比吗( 没有 ) )
- 场景题1:微信实现的IM的算法中,为了保证消息的顺序传递,需要使用递增的分布式ID算法,在分布式的环境下,如果保证每个用户的消息携带的ID是趋势递增的(完全不会)
- 场景题2:简单说下百度搜索下,输入几个关键字,后面出现的推荐是如何实现的以及排序的( 我回答说不考虑推荐系统啥的,使用trie树+redis的sortedset )
(三面)
随便聊聊
(Hr面)
随便聊聊( 等后续通知 )
网易云音乐
(一面)
- 自我介绍+项目
- 线程池相关( 回答得深一点:futuretask + worker类( state为-1的作用 ) )
- Java线程的安全性( 从重排序+可见性+原子性来答,尽可能深入回答 )
- redis分布式锁相关,在项目中是如何应用的
- mysql,聚集和非聚集索引,%like%,maysql的事务,默认级别,gap锁的原理, 组合索引在B+树中是如何表示的( 这块没答好 )
- 手撕算法,求top100 ( 快速排序稍微变变 )
(二面)
- UNIX网络编程中,使用线程池的情况下,主线程如何将fd传给从线程(不太会)
- Redis的网络模型(EPOLL LT模式)+内存分配算法(Jemalloc) + LRU如何实现( 我是从Java的LinkedHashMap回答的,红黑树+双向链表 )
- 聊聊对网易云音乐的认识
(Hr面)
随便聊聊
美团到店(严重怀疑被kpi了,明明笔试那么好T。T)
(一面)(18分钟)
- 微服务架构
- Java的各种锁
- 自己实现一个RPC框架
(二面)(15分钟)
- 介绍下项目,没了
京东
(一面)
- 聊项目
- Java线程的安全性,各种锁,Syn和可重入锁的区别(源码级别)
- SpringBott的自动装配
- Spring的设计模式( 单例,工程,代理,观察者 )
- 对比jdk的动态代理和cglib动态代理区别
- bean的默认级别(@scope注解,默认是单实例,可以修改为多实例)
- 算法题
给一个时间,设计一个算法来判断是对应一周中的哪一天。
输入为三个整数:day、month 和 year,分别表示日、月、年。
返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。(2020.1.1是星期三)
字节
(一面)
- 聊项目
- redis的原理(数据结构,持久化原理(rdb+aof),主从通信原理(raft协议), 集群与哨兵模式的区别)
- 数据库索引(B+树索引,聚簇与非聚簇,组合索引(最左匹配))
- 数据库事务(隔离级别,各种读问题, innodb默认隔离级别)
- 算法题
排序二叉树第k大结点
斗鱼
(一面)
- 聊项目
- 聊JVM(垃圾回收,内存分配,有没有实际调优过(没有))
- 聊线程池(自带的常用3中线程池原理,参数+流程 + 源码)
- 聊数据库(隔离级别,事务性)
- 随便写个二叉树遍历
(二面)
- 聊项目
- 聊TCP在UNIX网络编程下的原理
- 愿不愿意转go + 闲聊
阿里消息中台
(一面)
- select/poll/epoll 理解, ET/LT源码区别
- tcp协议,setnoday配置, reset包
- JUC中的copyonwrite的理解
- 可重入锁源码(公平与非公平模式), 在唤醒过程做了哪些优化
- netty线程模型,write()和channel.write()的区别
(二面)
- 全程吊打,项目到了几百万,甚至上亿的级别如何优化,然后凉凉
其他
其他的还有的面经,其实跟上面知识点差不多,加上自己之前没有记录,忘了很多,大家将就看看
体会
- 一定要早投,不然后面可够你等的
- 基础扎实是不够的,还要有项目支撑(在项目的基础上问基础),我一般能过一面,二面就拉闸,因为没有实习经历
- 建议面一轮总结后就忘一轮(别在意结果),因为等得是真的难受,各位心态要好
- 尽量海投
- 多做项目,没有就上github上面找
项目建议
我自己的话没有实习经历,基本都是自学,我自己的话对Netty框架比较感兴趣,这里以Netty为基础给大家几个项目方向参考
- 基于Netty实现RPC框架,在此基础上实现raft算法,然后继续在此基础上实现一个简单的kv存储。
- 基于how tomcat works这本书,自己使用NIO和Netty分别实现一个简易的Http服务器
- 使用EPOLL/POLL/SELECT 三种网络编程模式,实现一个c语言版的简易Netty,并在此基础上实现Http协议的解析,并使用webbench进行压力测试
- 自己实现一个简易的spring 框架 支持IOC/AOP,网上资料很多,如果不满足,可以阅读blade(https://github.com/lets-blade/blade)这个开源项目的源码
拿了蚂蚁金服中间件, 腾讯云中间件,蘑菇街,斗鱼,字节飞书等实习offer, 网易Hr面挂。
很强啊!
跟群里的许多大佬差距还是很大的hhh
佬,找工作的化,django和sprinboot是都学,还是建议只学一个
目前python和java都基础语法都会点
好强啊大佬😲
说句实话,Google那个实习太太太可惜了,kickstart排名都已经这么高了,真的好可惜
其他大厂的offer都不足以和google的那份相提并论,太可惜了
如果家境尚可。。没有外企的话,建议考公。国内互联网太累了。
这么多东西怎么记得住呀?
理解了再记吧,可以做个思维导图
byene哥哥阿噗啊噗
狗哥!!
一个公司最多可以面几个部门呀?感觉腾讯就面了好多部分
所有部门随机捞
硕士还是猛啊,
顶