美文网首页
2020 阿里巴巴和字节跳动面试总结

2020 阿里巴巴和字节跳动面试总结

作者: sha4yu0119 | 来源:发表于2020-11-21 00:33 被阅读0次

    字节跳动

    截止到11-20号,字节跳动一共面了七轮(挂->捞->挂,一般来说技术在3-5面),现在还在流程中。

    字节跳动最大的特点就是每一轮最后都有笔试题。很考验选手心态,很多上周的穿山甲三面就是因为笔试影响了心态导致后面连环爆炸。

    字节目前大部分均为GO,因此Java问的较少,这是和阿里最大的区别

    技术类问题

    • 缓存失效的一瞬间如何防止大量请求打垮应用?
      解法1:守护线程为缓存续期
      解法2:二级缓存错开过期时间
      解法3:为数据库访问做令牌,拿到令牌的才可访问数据库

    • Redis缓存淘汰策略
      对这块不太熟悉,但是粗略想来和操作系统里的页面置换算法应该异曲同工

    1. 最优页面算法。根据页面的使用频率来进行置换,但并无可行性。因为操作系统无法判断页面的使用频率。
    2. NRU。 分为R位和M位,启动时均为0。操作系统会定时将R位置零,区分近期使用的页面。0: R=W=0, 1: R=0 W=1, 2: R=1 W=0, 3 R=W=1。算法会随机从编号最小的非空页挑选一页淘汰。FIFO。最早进入的页放在队头,缺页中断时,移除队头,加入队尾。
    3. 二次机会。基于FIFO,不过在移除时,如R位为1,置零,加入队尾,继续查找。
    4. 时钟算法。二次算法的循环链表形式。
    5. LRU。淘汰近期未被使用的页面。要求硬件有一个64位计数器C,在每条指令执行后自增。每个页面也需要有能容纳该计数器值的域。
    6. NFU。软件模拟LRU。每次时钟中断时,计数器加上相应页面的R值。可以大致纪录页面的访问频率,被称为NFU(not frequently used)。
    7. 老化算法。对NFU进行小小修改即可模拟LRU,在每个时钟周期对计数器进行右移操作,推入R值。在缺页中断时,移除值最小的页面。
    8. 工作集算法。一个进程在过去n秒中访问到的所有页称为一个工作集。(前提:人们发现进程并不会访问所有的页。)时钟中断会定期清空R位。每个页在使用时会纪录当前时间,但扫描时,算法根据R值与时间差来判断是否需要置换。最坏的情况下,无可置换页面,则随机选择,一般选择“干净”的页面,即W=0。
    9. 工作集时钟。如R=1,则R=0,检查下一页。如R=0且已过时,再看W值,如W=1,为防止调度写磁盘引起的中断,则继续向后,直到找到一个干净页面。如W=0,说明页未修改,在磁盘中有有效副本,则申请页框,将新页面放入其中。最大移动N次,即一圈。会出现两种情况,至少调用一次写操作,那么就有干净页面存在,否则随机找一个干净页面置换,如无干净页面,将当前指向的页面写入磁盘。
    • 分布式锁的实现
      Redis,但CAP中REDIS并不支持C。ZK可以解决这一问题

    • 数据库索引的数据结构,优点
      B+ 树,范围遍历及低层级可以减少离散IO

    • MySQL中事务的隔离级别
      四个级别要简单说下。其中Innodb下RR是如何解决幻读的也要提一下。间隙锁及MVCC。

    • RedoLog, BinLog, UndoLog 区别及作用

    • 有无听过逃逸分析
      标量替换,锁膨胀,锁消除,栈内分配等

    • 有无通过拥塞控制,聊一下其原理
      TCP拥塞控制。BBR等

    • 间隙锁上锁细节
      确认过眼神,是极客时间的同班同学哈哈哈哈哈。

    • 乐观锁与悲观锁
      简单聊一下,扩展到CAS,然后是ABA问题,如何解决?版本号。

    • ConcurrentHashMap实现原理
      分段锁及CAS,其他同HashMap

    • ReentrantLock 源码实现

    • HashMap 源码实现

    • 调表、布隆过滤器(布谷鸟过滤器)

    项目类问题

    项目类问题大致分为以下几种

    • 聊一下项目架构

    • 聊一下解决过哪些问题

    • 自己在团队中的角色,团队在公司的角色,当前工作在公司中的定位等等

    • 项目细节,会根据说的东西提出一些疑问,对做的不好的地方做优化等等

    • 技术选型类问题

    1. 外包项目以客户环境优先。
    2. 功能得满足
    3. 看有无成功生产考验为其背书
    4. 社区环境,是否仍在维护,换句话说,出了问题,可有人帮你找纸擦屁股
    5. 开发语言(小公司不用考虑,大公司会考虑自维护)

    设计类问题

    • 抢红包
      几个要点:
      请求抖动。请求的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

    1. System.gc();
    2. jcmd 也可以触发
    3. Young区无可用空间
    4. Young晋升至Old时无足够空间
    5. 永久代满:常量池、类数据(动态代理类)

    HR类问题

    • 为什么考虑换工作(我是两年经验一年一跳)
    • 职业规划,目前还欠缺什么
    • 如何看待工作

    相关文章

      网友评论

          本文标题:2020 阿里巴巴和字节跳动面试总结

          本文链接:https://www.haomeiwen.com/subject/zvhsiktx.html