后台秋招面经总结:字节,百度,网易,腾讯,阿里等
结果:vivo(offer)、字节跳动(offer)、百度(offer)、华为(offer)、网易有道(offer)、美团(offer)、网易游戏(offer)、阿里(offer) 、腾讯(地点不合适,放弃)、微软(9.22笔试,无后续)、滴滴(笔试挂)、快手&微博&搜狗(笔试过,放弃面试)
vivo(软件研发工程师)
6.4 笔试 6.12 面试(现场面)
一面(40分钟)
- Static变量和方法有什么特点,能不能访问非静态成员,为什么
- Static方法能不能重写,为什么。父子类调用方法访问顺序
- 抽象类和接口的成员变量有什么差别,类访问权限
- HashSet怎么实现的,底层
- HashMap怎么遍历的
- 线性结构有哪些,二叉树属于吗?
- 二叉树最多有多少个节点?第k层有多少个节点?
- 冒泡排序怎么实现,怎么优化,两层循环各是干什么的。
- 多线程中wait和sleep方法的区别,锁
- MVC模式怎么实现,流程介绍。
- Hibernate怎么和上层交互,用过哪些数据库,了解多少。
- 手写sql:查询从6.1开始到现在每天的评论数量;评论大于1000的数量(注意日期函数)
- 说论文,说项目(具体细节不说了……)
- 项目方法是自己提出来的还是有前人做过,有什么不同,改进在哪里。
HR面(20分钟)
- 为什么来vivo,对软件后台工程师了解多少
- 在项目遇到的最大的困难,怎么解决的。
- 你觉得你和别人比优势是什么?有什么缺点
- 还有一些常规问题……
- 你有什么问题问?
vivo效率是真的快,面完第二天晚上就给发带薪资的两方offer了,看薪资应该是SP,不过当时看到有5k的违约金,那时秋招提前批也刚开始,想想自己大概率也不会去就拒了。
字节跳动(游戏研发工程师)
6.30 笔试 7.7 技术一二三面 7.12 hr面(都是视频面)
一面(一小时)
- 自我介绍
- 网络分层结构
- TCP为什么在网络环境不好的时候慢
- 滑动窗口机制
- Google的BBR算法
- 抽象类和接口的区别
- 数据结构底层 list map arraylist hashmap
- 堆 栈 方法区的区别
- Hibernate的session
- 数据库底层
- 说项目(都是问论文,不说细节了……)
- 项目用到哪些设计模式 有帮助么
- 算法:6个或8个苹果装一个袋子,最少袋子数量 DP背包问题
- 为啥投游戏
二面(50分钟)
- 聊项目和论文……
- JAVA垃圾回收算法
- 数据库mysql和redis区别
- 并发:线程池、锁等
- 对中间件对了解
- 场景题设计:卡牌游戏数据结构 抽卡概率 十连抽必出卡 单卡概率出
- 场景题设计:游戏服务端和客户端的设计 分别考虑什么
三面(一小时)
- 了解哪些数据结构 以时间复杂度的角度说
- List Map……LinkedList如果要查询O(1)怎么设计
- 设计模式:项目里怎么做的 优化性表现
- 深挖项目(问的问题都很深,深挖底层的那种……)
- 算法:链表k段反转
- 场景题1:很大地图 每个npc移动 数据结构设计 怎么找周围的npc 算法 以圆半径怎么找 注意玩家是在移动
- 场景题2:游戏排行榜 弹幕的数据结构设计 考虑哪些因素 怎么存数据库里
- 场景题3:前100的玩家怎么找 说了分治 分治怎么做 分布式的话怎么一致……
7.12 hr面(20分钟)
- 自我介绍
- 自己的优缺点
- 学习过程中遇到的一些问题如何解决的
- 性格上的优缺点
- 家庭情况
- 为什么想来北京
百度(Java研发工程师)
7.18 一面 7.19 二面 7.22 三面(都是电话面)
一面(一小时10分钟)
- 自我介绍+说项目…
- HashMap 底层数据结构
- 有序 TreeMap怎么实现 倒序呢?
- 有哪些异常 怎么处理 自己定义过异常吗
- 类加载器
- 违背双亲委派模型的例子 Tomcat
- Tomcat违背过程
- 自己写一个HashMap走双亲委派会被覆盖吗?
- 从浏览器传入到Tomcat处理全过程
- SpringMVC全过程
- 堆内存介绍 两个survivor频繁切换会进入老年代吗?设置阈值的参数是啥?
- Redis管道
- Redis文件持久化 会影响主进程吗
- Redis分布式锁的实现
- MySql隔离级别 怎么实现可重复读的
- 间隙锁咋实现 用sql语句说一下
- MySql索引怎么实现
- 为啥用B+树范围查询比较好?
- Mysql时间戳 怎么不修改自己增
- 算法:两个栈实现队列
- 算法:找二叉搜索树的第k小
- 算法:X的n次幂怎么实现
二面(一小时)
- synchronized底层原理 在哪有应用
- 场景:银行转账 synchronized怎么实现 在哪里加锁 A和B同时互转呢 一定要同时
- wait方法 notify方法
- 线程池
- Spring 事务传播机制 基于什么实现
- 场景:事务a里调用事务b,b方法是私有的,怎么做
- Spring AOP简单说一下
- mysql联合索引,有ab两索引,a=1 order by b能做么(还有几个sql语句的场景让说索引)
- 泛型,有个list extend 数字,list可以add吗
- 场景设计:客户信息 手机号联系方式可以有1~n个,一个人可以有多个号码,新来一个客户判断是否在数据库里,比如另一个同名的人有2个号码,全部包含在第一个人里就算在,否则不算。数据库存很多个数据,怎么设计
- 设计模式 说五个以及项目里用到的
- 谈项目……
这一面问的问题都是结合场景回答,很对胃口的面试官,面完整体感觉很棒,答的也还不错。
三面(一小时)
- 自我介绍
- Linux命令awk sed
- 位运算 取模用哪个
- TCP UDP HTTP 浏览器输入网址之后的流程
- 知道哪些架构 随便说一些
- 讲一下微服务SOA DDD
- CAP原理
- 说下对分布式的理解
- 毕业时间 能来实习吗 有和导师商量的余地吗
- 做过哪些大型的工程类的项目
- 做项目的过程给你带来的收获,最重要的一点
- 学习中遇到的最大困难,怎么克服的
- 科研过程中如何进行自己的课题的
- 发的论文难点 困难 怎么做的
- 为什么不考虑机器学习和大数据方向
- 对未来职业发展方向的规划和想法 矛盾
- 对来北京发展的生活压力工作压力怎么看
- 为什么想到从事技术类开发和测试,你觉得区别在哪,有考虑未来产品运营等非技术类岗吗
- 个人优缺点 多说几点
- 最近在看什么书 平时生活中喜欢看什么书
- 做什么事情会让你最有成就感
- 最近什么事让你有挫败感
- 对外界对百度的评价有什么看法,如果你之后入职百度了你会有什么想法
- 对百度什么方向的研发感兴趣 偏商业化的还是偏用户的
- 用过哪些百度app 有什么感受和建议
- 你有什么要问我的
走的百度官网的提前批,面试流程整体感觉很棒,二面问的问题都是结合场景回答,很厉害的面试官,三面主管面属于技术+hr的问题吧,面试官气场比较足。
阿里(Java研发工程师)
一面(一小时)
- 自我介绍
- 项目难点 遇到的最大的问题,怎么解决的。
- 输入www.baidu.com的全过程
- 自己实现服务端时,怎么处理响应 ServletRequest和ServletResponse
- 线程池怎么创建 几种线程池介绍一下
- ***阻塞队列和有界阻塞队列区别 fixedThreadPool用***队列有什么不好
- JDK版本 你用的是多少
- 介绍下集合类(Collection、Map)
- HashMap和HashTable的区别
- 介绍下ConcurrentHashMap
- switch 支持类型
- OOM遇到过吗 原因 解决方案 你遇到过哪些
- 给8G的内存 怎么设置堆的参数
- 3亿数据量 插入一条sql语句发现很慢 怎么调优
- drop delete truncate 区别 能不能回滚
- 1w个数据无序的 怎么找出前1000个最大的 有序的呢
- Spring MVC流程
二面(1个半小时)
- 项目难点 平时怎么学习看书的
- zookeeper应用场景
- 负载均衡 Nginx七层负载均衡、DNS怎么做负载
- 缓存和数据库的一致性怎么保证
- 服务器压力一样,连接过来怎么保证负载均衡,用zookeeper
- 对大数据的了解
- 算法:归并排序
- 算法:设计一个重试执行器
三面(半小时)
- short、int、long各占多少字节
- String、StringBuilder、StringBuffer的区别
- 说说Java中有哪些锁、怎么用
- int i++ 多线程怎么保证原子性 为何volatile不行
- 多线程volatile修饰变量的通信过程
- 乐观锁CAS怎么用 要用到volatile吗
- AtomicInteger的底层机制
- BIO和NIO的区别
- 怎么保证先读20k数据包,再读30k数据包的非阻塞性
- 自己写一个String类,会调用lang包的String还是自己写的
- 说说双亲委派模型
- Tomcat为什么违背双亲委派
- 算法:字符串表达式运算,带括号和加减乘除,一次遍历
- 百万级数据,怎么设计白名单和黑名单
- 布隆过滤器的hash冲突有哪些解决方法
四五面+Hr面(一个半小时)
- 深挖项目细节……
- 算法:写快排优化 看代码风格和质量
- 场景题:微信/支付宝支付为什么比银行转账快 底层做了什么优化
- 场景题:秒杀系统怎么保证快速准确的 底层服务器设计
- 平时怎么看书、爱好
- 平时怎么学习新技术
- 喜欢看哪些博客 关注点是什么
- 项目中如何解决困难
- 投了哪些公司 目前的offer
网易有道(Java研发工程师)
8.3笔试 8.16 一面 8.30 二面 9.6 三面 9.12hr面(都是视频面)
一面(40分钟)
- 常用的数据结构
- 各种链表之间的区别
- 算法:链表归并排序。递归写法和非递归写法两种
- 归并排序的难点
- 数据库 索引 什么时候不适合用
二面(80分钟)
- 算法:实现根号2,保留10位小数
- 算法:实现一致性hash
- 一致性hash底层用的什么数据结构
- 介绍项目
- HTTP协议1.0、1.1、2.0的区别
- HTTPS协议双方确认传输密钥过程
- 场景:select name, age from user的数据库查询过程,以及怎么优化,有索引以及无索引时
- update age from user无索引是行锁还是表锁,为什么
- mvcc隔离级别怎么防止幻读
- 主从同步过程,binlog两种类型的区别
- 场景:用数据库实现分布式数据库唯一id递增
- 每个数据库缓存失效的那一刻怎么办
- 说下对dubbo、zk等分布式的理解
- 自己设计一个PRC框架要考虑什么
- 用Tomcat主要是解决什么问题
- SpringBoot了解吗
三面(30分钟)
- 怎么设计一对多关系数据表、多对多关系数据表
- 数据库第一第二第三范式
- 数据库死锁
- HTTP的get、post、delete之类
- 算法:矩阵走方格的最短路径,有障碍物(BFS)
- 设计微信发朋友圈、浏览朋友圈、删除朋友圈的整个流程和存储结构
- 说项目和论文……
- 工作岗位意向 想做哪方面
- 团队部门更喜欢哪个
hr面(30分钟)
- 自我介绍
- 面对非计算机专业的我,你来介绍下自己的项目
- 遇到的最大的困难,如何克服的自己最自豪的一件事
- 说一下自己的优缺点
- 平时除了在实验室外,其他的爱好
- 团队工作中如果有一个人没有完成 如何对上级交付
- 平时团队合作的多吗 说一个例子
- 生活工作如何平衡
- 现在有哪些offer了
腾讯(后台研发工程师)
8.12 一面 9.4 二面(均电话面) 8.15笔试
一面(一小时)
- 项目和论文介绍了半小时:很对口的面试官,感觉对我的研究方向很了解
- TCP拥塞窗口 滑动窗口
- 慢启动算法底层是怎么做的 好处坏处
- 拥塞变化的原因
- DDOS攻击 防御
- HTTP 3.0 2.0 1.0
- HTTP 2.0 服务器push怎么做的,怎么知道客户端需要哪些资源 为什么要这样做
- 给N个数找最大的K个数 算法怎么做
- 说一下堆结构的实现
二面(半小时)
- 说项目
- 慢启动算法用的哪一个 区别
- 内核源码中TCP窗口大小怎么计算的
- WIN_SCALE怎么计算
- 多个客户端窗口大小不一致 什么原因 怎么设置
- SO_RCVBUF设置的作用 仅对一个socket
- 怎么保证所有TCP连接都能有效 什么数组设置
- 内核源码角度说一下TCP三次握手
- 全连接和半连接
- TCP服务器连接过多,怎么排查
- syncookie关闭了就不能保存连接了吗
- Linux 查看网络流量 iftop
- Linux 查看TCP连接状态 netstat
- netstat参数中的Recv-Q和Send-Q什么意思,Recv-Q爆满了是什么原因
美团(系统开发工程师)
8.15 一面 8.23 二面(都是电话面)9.24 三面+HR面(现场面)
一面(一小时)
- 说项目
- 令牌桶算法
- 登录验证码怎么做
- Cookie和Session存在哪 如果是多机存储都会有什么问题 带id去找重复了怎么办 多用户修改了怎么办
- zookeeper数据结构 写节点的内存限制 在dubbo里作为什么角色
- dubbo中服务调用的几种形式
- RPC过程 怎么知道要调用的远程主机的方法
- 怎么把一个异步过程的返回结果转为同步的
- IOC的循环依赖 怎么解决 有哪几种
- AOP原理
- 你遇到的常见异常
- StringBuilder和StringBuffer区别
- ==和equals的区别
- HashMap、concurrentHashMap
- HTTP有哪些方法 get和post的区别
- 设计模式
- CAS实现原理
- ThreadLocal原理,底层,放在哪
- AQS实现原理 队列为啥要双向的
- Condition队列
- 平时怎么学习的
- 给你自己的技术打几分、学习能力打几分
二面(40分钟)
- TCP和UDP的区别
- TCP时间和资源消耗具体在哪
- 滑动窗口大小初始值
- TCP和UDP可以共用端口吗
- socket先启动服务器还是先三次握手 对应关系
- 三次握手过程中存在的问题
- Linux进程通信方式 最常用的哪种
- 共享内存生命周期
- Linux堆栈和Java堆栈区别
- Java线程池 ScheduledThreadPool
- 项目应用属于io密集还是cpu密集
- Spring的优点和缺点
- Bean对象作用域有哪些
- 知道什么别的类似于Spring这样的框架
- 反向***为啥叫反向不叫正向
- Nginx和Apache 为什么Nginx快 底层实现是什么
- 数据库mysql存储引擎 innodb优势 其他引擎
- 用索引一定快吗 什么情况下查询快/慢
三面(一小时)
- 深挖项目 挨个问一遍
- 对Spring架构的理解 画类关系继承图
- 对Dubbo的理解 结构是什么样的
- 设计题:电商系统设计 画类图和UML图表示之间的负责关系
- 如果给你一个大型系统开发 如何分工统筹 按什么原则分
- 项目中和别人遇到冲突的例子 怎么解决的
- 平时为什么看源码 如何读源码 按照什么顺序学习
- 对架构设计有什么看法
- 了解领域驱动设计吗
Hr面(40分钟)
- 介绍下做过的数模比赛 为什么要做这个
- 做过的课题中遇到的最难的问题 怎么解决的
- 从大学到现在印象最深的一件事
- 为什么选这个研究方向 喜欢吗
- 导师当时是什么标准选择的
- 为什么想做后台 对后台的理解
- 前端岗,安全岗为什么不考虑
- 职业规划
- 平时的爱好
- 家庭情况
- 家里人对你去互联网工作怎么看
- 互联网工作压力和强度大 你怎么看
- 工作地点问题 为什么想去北京
- 现在有几个offer 选择时会如何考虑
美团没做笔试直接被捞的,面试还是挺有难度的,说到点都会深挖。二面之后说是后面安排现场面,没想到一等就是一个月啊……一二面主要都是知识点,三面主管面气场很强,问了很多架构设计的东西,总体感觉美团的面试难度是有的,面试的问题深挖能看出技术水平很不错。意向书一周后发了。
网易游戏(游戏研发工程师)
9.7笔试 9.19 一面(视频面) 9.27 二面+HR面(现场)
一面(40分钟)
- 算法:M个元素的数组随机返回N个(M>N),等概率
- 算法:实现Map的迭代元素遍历,删除一个元素
- String和StringBuilder的区别
- 各种Map介绍一下 put/get操作
- HashMap是线程安全的吗 会有什么问题
- ArrayList/LinkedList 前者扩容是迭代器会有问题吗
- 说一下红黑树
- 矩阵按行遍历和按列遍历的效率一样吗
- Java内存模型
- Java如何进行内存回收
- Java 8之前的类对象可以回收吗
- 编译之后的对象放在哪
- 类加载过程
- Socket TCP的客户端和服务器的连接通信过程设计
- accept是阻塞的吗
- Socket TCP客户端和服务器的断开过程
- 出现大量的CLOSE_WAIT状态如何排查
- 操作系统的虚拟内存
- 页面置换算法 LRU用什么数据结构
- 图形学了解吗
- 玩过哪些游戏
- 场景题:进入游戏界面时大量玩家排队, 中途有玩家退出 如何设计这样的场景,用什么数据结构
- 场景题:二维地图 很多点 找离自己最近的玩家
二面(一小时)
- 算法:N个数字打印全排列(DFS)
- 深挖项目……
- Linux源码中各包的架构流程
- TCP滑动窗口的作用 人为能修改吗
- 单链表O(1)时间删除节点 思路
- 数组和链表遍历谁快 为什么
- 进程如何访问内存空间
- Cache 用来做什么的 快表页表怎么用
- LRU算法底层实现原理 增删查时间效率
- 数据库用过哪些 大概说一下
- Redis和mysql一致性保证
- 场景题:设计聊天室服务端整体架构 画图
- 概率题:圆中随机取一点 设计思路
- 对游戏研发具体做什么的理解
- 具体要学习哪些技术 自己的了解
- 互联网加班压力自己怎么看 家人怎么看
- 投了哪些公司 offer情况
- 期望工作地点&期望薪资
HR面(20分钟)
- 大概介绍下自己的研究生课题&项目
- 会经常性地去了解新技术吗 平时怎么学习的
- 喜欢挑战性的工作还是固定一些的
- 项目中遇到的最大困难 如何解决的
- 说下自己的学习能力
- 人际交往能力怎么样 举例子
- 投了哪些公司 目前的offer
- 期望薪资
华为(通用软件开发工程师)
8.21笔试 9.20 技术一二三面(现场面)
一面(半小时)
- 算法:正整数n最少由多少个平方数组成(DP,leetcode279)
- 项目介绍……
- 论文介绍……
- 代码量 git维护
- 说下快速排序和堆排序
二面(半小时)
- 算法:替换k个字符的最长重复子串(滑动窗口,leetcode424)
- 项目介绍……
- 数据结构 树 用过哪些 区别 B+树 红黑树
三面(半小时)
- 聊人生……