2020 春招面经整理

阿里

偏好:Java、JVM、Spring、MySQL、OS、网络、设计模式

盒马 一面 03.17

  1. 进程与线程的区别
  2. PCB的结构
  3. 分页和分段的区别
  4. 怎么避免死锁(死锁预防)
  5. 处理死锁的四种方法
  6. UDP如何借鉴TCP的性质实现一个TUDP?1.握手;2.超时重传(SEQ、ACK)
  7. 快排最糟糕的情况
  8. 红黑树的五大特征
  9. JVM 如何判断对象是否存活(可达性分析)
  10. 垃圾回收算法
  11. hashtable与HashMap
  12. HashMap 1.8 前后区别
  13. ConcurrentHashMap 1.8 前后区别
  14. 讲两个项目
  15. 代码1:二叉树镜像
  16. 代码2:“hello nju” 变 “nju hello”,辅助空间O1

蚂蚁 一面 03.20

  1. 兴趣
  2. 后端有钻研过什么吗?安全?机器学习?大数据?算法?云计算?
  3. BAT 如何抗住大流量?有关注过吗?常见优化?
  4. 负载均衡的原理
  5. nginx 可以做几层的负载均衡?七层?四层?
  6. 四层和七层的负载均衡的区别?
  7. nginx 单点失效怎么办?
  8. sql 与 nosql 区别
  9. 关系型数据库的优点
  10. 数据库隔离级别、传播机制,用来解决什么问题
  11. 不同的网站会使用怎样的隔离级别?
  12. Web 项目、移动端项目
  13. Taro 和 RN 技术选型原因
  14. Vue 是什么时候开始使用的
  15. 有看过 Vue 源码
  16. 对算法、云计算有了解吗
  17. OJ、ACM 参加过吗
  18. 树状数组有没有听过
  19. docker、k8s 有研究过吗
  20. 对自己未来的规划?金融银行互联网?前端后端?
  21. 保研考研

腾讯

偏好:算法、网络、OS、分布式、设计模式、mysql、Linux

CSIG 一面 03.21

  1. 自我介绍
  2. 介绍项目
  3. HTTPS 与 HTTP
  4. TCP 如何保证可靠性
  5. 拥塞控制的算法
  6. 滑动窗口
  7. 单链表快速找中间节点
  8. 代码1:两个字符串的编辑距离
  9. 代码2:实现最大堆

CSIG 一面 04.11

  1. 项目(从技术角度来分析难点和设计巧妙的点)
  2. 选择 Celery 原因
  3. docker 网络模式
  4. 除了前端轮询,是否有更好的方式?(WebSocket)
  5. 从输入域名到返回(DHCP、RAP、DNS、HTTP握手、HTTP请求)
  6. HTTP 为什么有 TIME_WAIT 状态
  7. HTTPS 四次握手
  8. 中间人攻击
  9. 对称加密、非对称加密的对比
  10. HashMap 冲突了如何解决(链地址法等)那么如何保证仍然是O1的?(双散列法)
  11. 进程通信的方式
  12. 对共享内存和消息队列,一个进程被kill了,那他们还存在吗?(猜存在)
  13. fork子进程时,从父进程继承了什么?(父进程的代码段、数据段、堆栈段)
  14. fork了一个子进程后,内存蹭蹭往上涨原因 ?(fork实际是写时复制,如果在fork后对子进程进行修改或调用exec方法,就会导致大量内存消耗)
  15. 算法题:n级楼梯,一次1步或2步
  16. 一致性哈希
  17. 同一个来源的请求达到一个集群上,通过各种负载均衡算法后,如何保证集群数据的一致性,这样下次打到另一个机器上时仍然是有数据的?(一致性要求不高的场景可以使用 Session Server,高的话可以通过一致性算法如 Paxo、Raft 等)
  18. raft 日志压缩是怎么做的
  19. raft 集群配置更改是怎么做的

被锁简历锁了11天吧。。然后约时间我说我考试下周吧,结果说15天简历就释放了,那就只能周六了。面试官广普有点点好笑哈哈哈哈,整体体验很好,最后我问对实习生的培养怎么样,回答说部门这方便很不错,几个进来不如我的后来成长速度很快,在公司都算前列。(于是我知道我过了哈哈哈哈哈)算法题看我会写就说算了不写了,问点别的。。于是我主动扯自己的另外一个项目,想拉一下,结果不感兴趣。。。

CSIG 二面 04.15

  1. JWT 的优缺点
  2. 分布式事务协议

字节跳动

偏好:算法、Java、数据库、Linux、项目

一面 04.14

算法题

  1. 两数和为固定值的对,如{2,7,4,9,11},target13,有{1,11}和{4,9}

  2. 合并 k 个有序数组

基础:

  1. 进程间通信方式
  2. synchronized和volitale
  3. synchronized 对象锁、类锁

二面 04.14

算法题

  1. 二叉树zigzag输出

基础问题

  1. 输入一个url的访问过程
  2. HTTPS 获取私钥过程的随机数被别人获取了会怎样?(其实是通过公钥加密过的,截获也无所谓)
  3. 为什么不直接使用TCP
  4. 讲下数据库事务
  5. 数据库宕机了怎么办,正在执行的事务会怎样
  6. 快照也没保存全呢?

三面 04.26

算法题

  1. 甲赢一局的概略为p,7局4胜的概率为多少?

    最开始给了数学解法
    
    p^4 * (1-p)^0 + p^4 + (1-p)^1 * C(4,1) + p^4 + (1-p)^2 * C(5,2) + p^4 + (1-p)^3 * C(6,3)
    
    后来说动规解法呢?
    
    dp[i][j] 表示在第 i 局赢了 j 局的概率,状态转移方程为
    1. dp[i][j] += dp[i-1][j-1] * p // 这一局赢
    2. if j != N: dp[i][j] += dp[i-1][j] * (1-p) // j 不为 N 时,这一局可以输
    
    初始状态为
    1. dp[0][j] = 0
    2. dp[1][0] = 1-p
    3. dp[1][1] = p

基础题

  1. 项目
  2. 项目对你的成长
  3. 项目的难点
  4. 自己是怎么学习的

微软

偏好:算法

一面 04.07

算法题

  1. 格雷数(00, 01, 10,11)
  2. 求一个 LIS 序列

基础:

  1. vue数据双向绑定的原理
  2. 反射是什么

二面 04.13

  1. 连续数组的最大和(有负数的情况)
  2. round 不是四舍五入,而是看前一位减小误差,实现一个round函数。

美团

偏好:Java、并发、网络、项目

一面 04.14

  1. 每天300万数据量,预期保存3年,需要怎么保存到数据库?
    1. 先从业务上考虑,是不是所有的字段都是必须的?减小业务上的数据量
    2. 划分存储,不是所有数据都需要存储到数据库(如果需要的量大可以考虑es等)
    3. 分模块存储(热点数据与不经常使用的分开)
    4. 最后到存储这一步再思考 MySQL 索引
  2. 什么时候索引不能被使用?(LIKE、WHERE 列是表达式)
  3. 内部类的分类及特点
    1. 普通内部类
    2. 局部内部类
    3. 静态内部类
  4. 隐式引用

二面 04.15

  1. 微服务熔断降级

  2. 一个数最少可以有几个平方数组成。最开始没思路,后来面试官提示了 dp。想到类似硬币的解法。

    例1:6 = 1 + 1 + 4,结果为 3
    例2:11 = 4 + 9,结果为 2

网易

偏好:微服务、Docker、RPC、Java

一面 04.16

  1. 项目
  2. 阿里中间件的比赛
  3. 为什么需要双亲委派机制

Shopee

偏好:网络、OS、数据库

一面 04.24

  1. HTTPS 第一次 Hello 是基于什么协议?(TCP)

  2. MyISAM 与 InnoDB 性能比较及原因

  3. MySQL 写一条数据的具体过程

  4. 非对称计算慢的原因(计算多,那为什么计算多)

  5. Double ACK

  6. pid 是怎么生成的(子进程就是父进程+1啊,面试官:那你见得不够多。后来查了下是遍历可分配的PID范围,找到下一个可用的)

  7. JVM fork 子进程的哪些部分

  8. 堆栈段指的到底是什么(栈)

  9. Linux fork 写时复制

  10. 代码题:找到所有左边比它小、右边比它大的数字,时间复杂度要求O(n)

    对当前位置 i,用数组保存 [0, i) 的最大值,(i, n-1] 的最小值,然后检查当前值是否大于左边的最大值,小于右边的最小值。