第一轮技术面
- 自我介绍
- 详细介绍一下自己做的项目
- 根据项目提了一些问题
- 问了HashMap的实现原理
- 数据库B+树
- final关键字
- 设计一个榨汁机类,面向对象怎么设计
- get、post区别,使用场景,幂等性
- TCP、UDP,分别在应用层有哪些协议
- 算法题1:数组值为1-n,各出现一次,先加入x(x也是1-n的范围),找出x
- 算法题2:给定n个节点,以及每个节点上的一个数值,如果两个节点数值的最大公约数大于1,那么在这两个点之间连一条边。求这个图的最大连通分量的节点个数。
- 智力题:给十桶乒乓球(每桶中乒乓球数量无限),有一个桶的球重9g,其余桶均为10g。找到9g的那桶要测几次,如何测?
- 如果是桶中只有一个球是9g,那么2-3次,55一次,22一次,如果平衡,则剩下那桶,否则11一次。
- 如果是桶中所有的球都是9g,那么一次,编号1-10,按编号拿出球的数量,最终少的克数就桶的编号。
- 你有什么想问的?
第二轮技术面
- 聊项目
- http的各种方法
- GET、POST、PUT、DELETE
- http和https的区别
- https的加密过程
- 从浏览器输入一个url到生成页面发生了什么,写下SQL
- Java多线程介绍一下
- session 和 cookie的区别
- 介绍TCP
- 状态码介绍
- 算法题1:反转链表按k,最长重复子串
- 算法题2:接雨水(具体不记得了)
第三轮技术面
- 介绍下HashMap原理
- 介绍下红黑树,怎么变为线程安全,锁机制
- 介绍下JVM
- 介绍下MySQL,B+树,存储引擎
- 不使用redis存储session该怎么做
- memcache
- db
- 本地map+uid路由
- Linux的基本系统指令
- 如果A给B转账的同时B给A转账,怎么并发量最高
- 防止死锁:不管谁转给谁,都先锁uid小的。
- 预扣:设计一个预扣字段,A->B,将A的金额预扣在该字段中,发送一个事务消息。
- 你有什么想问的吗?
抖音内推一面
- 自我介绍
- 项目介绍
- 用到了什么rpc框架?那coral是基于什么协议的?
- http协议的header是什么结构的?
- TCP和UDP的区别
- TCP怎么保证可靠传输的?
- 如果tcp连接断了(比如server宕机),client如何处理?
- 介绍一下链表
- 单链表和双链表的区别及应用场景
- MySQL索引
- 操作系统和数据库了解么?
- HashMap的底层实现?
- 数组存储的元素是什么?
- 详细介绍一下 put这个方法的执行流程
- hashcode 返回32位的 int 结果
- 与数组长度取模(按位与),计算出index,插入index下的链表
- valatile的作用
- 如何保证可见性?
- 算法题:输入一个数据流(4,3,10),请依次输出当前数据的中位数,声明一个链表去存储这些数据,并返回链表的中位数(ON)
- 给一个很大的log file, 形式是user id, login time, logout time, 如何找到峰值。
抖音内推二面
- 聊项目
- Java的hashmap
- Java中用到的锁
- 一个class 中有两个加锁的方法,可以同时分别被不同的线程调用么?
- 如何保证缓存与数据库读写一致性?
- 针对千万次每秒的访问,分布式缓存如何实现?主从换从如何保证一致性
- Git rebase 与 Git merge的区别
- 算法题:打印二叉树的左边界
抖音内推三面
- Java Servlet和Filter的比较
- 100层楼,给两颗鸡蛋,找到鸡蛋在哪层会破。要求最坏情况下次数最少的方法。
- MySQL的SQL
- 多个服务器间共享session的解决方案
- 分布式KV存储中间件
- 你学过redis?介绍下redis
- 二叉树转双向链表
- 逻辑题:岛上n个人,有人红帽有人白帽,每人只能看到别人头上的帽子,且彼此不能交流,如若确认自己是红帽子的话可以离开岛。有经过的渔民说了一句“你们中至少一人是红帽!”请问接下来发生什么情况?
- 你有什么想问的吗?
抖音内推HR面
- 自我介绍
- 未来的职业规划
- 业务沉淀、独当一面
- 说一下自己平时的学习方法
- 工作、博客、书籍。线下实践
- 你认为这些学习方法里最有效的是哪一种?
- 线下实践
- 评价一下之前的面试官,或者说之前的面试官有没有给你留下印象最深刻的一点
- 为什么想要来字节跳动?
- 你平时都用字节的哪些产品?有什么好的建议吗?
- 抖音,成就解锁
- 期望薪资
- 你有没有什么想问的?