字节跳动
截止到11-20号,字节跳动一共面了七轮(挂->捞->挂,一般来说技术在3-5面),现在还在流程中。
字节跳动最大的特点就是每一轮最后都有笔试题。很考验选手心态,很多上周的穿山甲三面就是因为笔试影响了心态导致后面连环爆炸。
字节目前大部分均为GO,因此Java问的较少,这是和阿里最大的区别
技术类问题
缓存失效的一瞬间如何防止大量请求打垮应用?
解法1:守护线程为缓存续期
解法2:二级缓存错开过期时间
解法3:为数据库访问做令牌,拿到令牌的才可访问数据库Redis缓存淘汰策略
对这块不太熟悉,但是粗略想来和操作系统里的页面置换算法应该异曲同工
- 最优页面算法。根据页面的使用频率来进行置换,但并无可行性。因为操作系统无法判断页面的使用频率。
- NRU。 分为R位和M位,启动时均为0。操作系统会定时将R位置零,区分近期使用的页面。0: R=W=0, 1: R=0 W=1, 2: R=1 W=0, 3 R=W=1。算法会随机从编号最小的非空页挑选一页淘汰。FIFO。最早进入的页放在队头,缺页中断时,移除队头,加入队尾。
- 二次机会。基于FIFO,不过在移除时,如R位为1,置零,加入队尾,继续查找。
- 时钟算法。二次算法的循环链表形式。
- LRU。淘汰近期未被使用的页面。要求硬件有一个64位计数器C,在每条指令执行后自增。每个页面也需要有能容纳该计数器值的域。
- NFU。软件模拟LRU。每次时钟中断时,计数器加上相应页面的R值。可以大致纪录页面的访问频率,被称为NFU(not frequently used)。
- 老化算法。对NFU进行小小修改即可模拟LRU,在每个时钟周期对计数器进行右移操作,推入R值。在缺页中断时,移除值最小的页面。
- 工作集算法。一个进程在过去n秒中访问到的所有页称为一个工作集。(前提:人们发现进程并不会访问所有的页。)时钟中断会定期清空R位。每个页在使用时会纪录当前时间,但扫描时,算法根据R值与时间差来判断是否需要置换。最坏的情况下,无可置换页面,则随机选择,一般选择“干净”的页面,即W=0。
- 工作集时钟。如R=1,则R=0,检查下一页。如R=0且已过时,再看W值,如W=1,为防止调度写磁盘引起的中断,则继续向后,直到找到一个干净页面。如W=0,说明页未修改,在磁盘中有有效副本,则申请页框,将新页面放入其中。最大移动N次,即一圈。会出现两种情况,至少调用一次写操作,那么就有干净页面存在,否则随机找一个干净页面置换,如无干净页面,将当前指向的页面写入磁盘。
分布式锁的实现
Redis,但CAP中REDIS并不支持C。ZK可以解决这一问题数据库索引的数据结构,优点
B+ 树,范围遍历及低层级可以减少离散IOMySQL中事务的隔离级别
四个级别要简单说下。其中Innodb下RR是如何解决幻读的也要提一下。间隙锁及MVCC。RedoLog, BinLog, UndoLog 区别及作用
有无听过逃逸分析
标量替换,锁膨胀,锁消除,栈内分配等有无通过拥塞控制,聊一下其原理
TCP拥塞控制。BBR等间隙锁上锁细节
确认过眼神,是极客时间的同班同学哈哈哈哈哈。乐观锁与悲观锁
简单聊一下,扩展到CAS,然后是ABA问题,如何解决?版本号。ConcurrentHashMap实现原理
分段锁及CAS,其他同HashMapReentrantLock 源码实现
HashMap 源码实现
调表、布隆过滤器(布谷鸟过滤器)
项目类问题
项目类问题大致分为以下几种
聊一下项目架构
聊一下解决过哪些问题
自己在团队中的角色,团队在公司的角色,当前工作在公司中的定位等等
项目细节,会根据说的东西提出一些疑问,对做的不好的地方做优化等等
技术选型类问题
- 外包项目以客户环境优先。
- 功能得满足
- 看有无成功生产考验为其背书
- 社区环境,是否仍在维护,换句话说,出了问题,可有人帮你找纸擦屁股
- 开发语言(小公司不用考虑,大公司会考虑自维护)
设计类问题
抢红包
几个要点:
请求抖动。请求的Set化。对请求做消息队列防止打垮服务器设计一个定时任务系统
钉钉的消息已读未读,如何设计该功能对应的数据结构
如何实现断点续传
文件分块+校验码
算法类
Top K 问题的时间复杂度;如果内存足够,能否优化其时间复杂度
小根堆,n(logk)。后面一问没想出来二维数组,向左递增,向右递增,最优解
第一反应是依赖有序特性二分查,横竖交替。但不对*** 2 x N的空间,使用1 x 2的矩形填充,共有多少种方式***
标准动态规划,状态转移方程式:dp[n] = dp[n-1] + dp[n-2]。
就是这题还有上面那题把我心态弄慌的QAQ,差点过了,太可惜了求数组中最大山脉数组的长度
有向图中,求起点到任意一点的最短路径长度
DFS或者BFS,然后DP优化一下
阿里巴巴
截止到11-20号,阿里一共面了六轮,其中支付宝给的评级是P5,但社招并无该级别的HC(简单来说就是挂了QAQ),而且支付宝的面试没有问技术,全程问项目。中间被菜鸟鸽了一波,企业事业部虐了一波,目前在走淘宝特价版的流程。
想进阿里,我觉得要么学历好(重点大学本/硕/博或者海龟),要么有开源贡献或者博客质量高,或者是走边缘部门。最重要的一点,履历得好,不能频繁跳槽,最好能有知名互联网搬砖经历(比如携程[狗头])
技术类问题
创建线程池的参数
CPU密集型和IO密集型的设置区别及原因GC算法
引用计数法。可达性分析(三色标记)。标记-清除。标记-压缩。如何解决频繁GC
这个问题其实在问什么情况下会触发GC
- System.gc();
- jcmd 也可以触发
- Young区无可用空间
- Young晋升至Old时无足够空间
- 永久代满:常量池、类数据(动态代理类)
HR类问题
- 为什么考虑换工作(我是两年经验一年一跳)
- 职业规划,目前还欠缺什么
- 如何看待工作