2020-08-10字节跳动面试题

字节跳动抖音三轮面试

第一轮:

  1. 影响一个Http服务最大连接数的因素是什么

  2. 一台服务器如何辨认一个请求是谁发送的

  3. 如何进行Token认证

  4. 说一下cookie,为什么要有cookie,cookie中放什么,cookie与session的区别

  5. Https是什么,建立连接的过程

  6. 算法题:给出一个n*n数字矩阵,寻找一条最长上升路径(数字越来越大),每个位置只能向上下左右四个位置移动(Leetcode329)

  7. 智力题:2n个人围成一圈,两两握手,形成n条线段,线段没有交点。 一共多少种握手方式?

(2)在圆上选择2n个点,将这些点成对连接起来,使得所得到的n条线段不相交的方法数(h(n))
思路:以其中一个点为基点,编号为0,然后按顺时针方向将其他点依次编号。那么与编号为0相连点的编号一定是奇数,否则,这两个编号间含有奇数个点,势必会有个点被孤立,即在一条线段的两侧分别有一个孤立点,从而导致两线段相交。设选中的基点为A,与它连接的点为B,那么A和B将所有点分成两个部分,一部分位于A、B的左边,另一部分位于A、B的右边。然后分别对这两部分求解即可。
设问题的解f(n),那么f(n) = f(0)*f(n-2) + f(2)*f(n-4) + f(4)*f(n-6) + ......f(n-4)*f(2) + f(n-2)*f(0)。f(0)*f(n-2)表示编号0的点与编号1的点相连,此时位于它们右边的点的个数为0,而位于它们左边的点为2n-2。依次类推。f(0) = 1, f(2) = 1, f(4) = 2。结合递归式,不难发现f(2n) 等于h(n)。

 

问答题都是计算机网络,算法题很快写完而且测试通过,智力题也很快做出,5分钟后二面。

 

 

第二轮:

  1. 说说你所知道的Java中线程安全的集合类

  2. Java中有什么办法使对象在各线程中隔离

  3. 说一下ThreadLocal是什么,如何实现的

  4. Redis为什么速度快,多路复用讲一下

  5. 项目中为什么用ES,ES在超大数据量下如何优化

  6. 操作系统的分页存储,地址转换

  7. 概率题:两人抛硬币,抛到正面的人获胜,问先抛的人获胜的概率

  8. 算法题:给定一个非空二叉树,返回其最大路径和。              (Leetcode 原题)

 

 

二面面试官人超好,回答完每个问题会有一个反馈,算法也都是一次通过,1小时后三面

第三轮:

  1. 实习项目中的难点(面试官不满意,他觉得没什么难度......)

  2. 一个算法题,回想一下其实不难,通过公式打印出图像,但面试官都没有把题目文字发出来,直接说的题目,而且各种条件也没说清楚,卡了很久,在我不断提问下才明白题目要干什么,面试官已经看出不耐烦了,我就知道凉了。最后题是写出来了,不过时间也过了很久。

  3. 下一个算法题是上面的改进,很快写出来了

  4. 最后还剩10分钟,写了个青蛙跳格子 (爬楼梯)

  5. 最后反问环节面试官对我的提问回答也很敷衍

第三面表现不好,和面试官交流起来很难受,面试体验也一般,问了一下内推人,三面没过,继续努力。

 

8月5日一面

  1. SpringBoot相对于Spring的优势在哪

  2. Spring中的依赖注入是如何实现的,实现的原理是什么

  3. Spring中运用了哪些设计模式

  4. 说一说自动拆装箱是如何实现的,是在编译期还是在运行时

  5. 深入问了一下Redis实现分布式锁(简历上写了),主从问题,脑裂问题,Redis能否解决脑裂

  6. 计算机网络:三次握手如果第三次的ACK丢了会怎样

  7. 堆和栈的区别,都会出现哪些异常,JVM中栈的默认大小,如何设置

  8. JVM中的常量池放在哪,元空间和永久代

  9. JVM问题的排查工工具

  10. 算法:已知一棵二叉树,如果选择一个节点,则不能选择与之有连边的节点,那么最多能选择多少个节点

第一面面试官态度很好,而且英文特别好,问题很有深度,好多问题都会让我去思考用到的设计模式

5分钟后二面,二面面试官比较忙,没有开视频

  1. 一个视频传输和存储的编码有什么不同(不会...)

  2. 聊了聊项目,项目规模大概如何,你所做的工作有哪些价值(答的不好,实习生做的业务不够核心)

  3. 说一说你为什么用ActiveMQ,消息队列如何保证可靠

  4. 消息队列如何保证不丢,你们是怎么做的

  5. ActiveMQ用LevelDB如何实现集群(不会...)

  6. 算法:给出两个字符串,求最短编辑距离(Leetcode原题,要是之前没做过我估计当场我肯定不会)

  7. 算法:上面在求出最短编辑距离的同时,给出编辑的过程

  8. 计算机组成原理:计算机由哪些部分组成,32位操作系统内存大小

  9. 一个编译原理的问题,完全不会...

  10. 路由器和交换机的区别

  11. 会不会机器学习,你的未来打算

这一面好多不会的,面试官的问题真的很底层,估计评价不高,但竟然过了

8月6日三面

因为上次三面挂了,这次特别紧张,但面试官人很好,首先活跃了以下气氛,问我之前的三面为什么挂,这段时间有什么提高,你觉得自己前两面表现的怎么样。

  1. 对比一下SpringBoot和SpringMVC

  2. 设计题:如果你自己实现一个MVC框架,你会如何实现

  3. 写个伪代码:如何把请求的url映射到Controller层方法上(这个写的不好,面试官说写的太死了,框架不会这么实现的,但也没为难)

  4. 写个SQL,统计全中国重名最多的十个名字

  5. 数据库的分表,排序查询的优化,你做过哪些数据库的优化

  6. 实习用到的RPC框架是什么,序列化方式有哪些,hessian,JDK原生,JSON,Protobuf对比

  7. InnoDB与MySLAM的区别,你还知道哪些存储引擎

  8. 你知道哪些Java虚拟机

  9. 如果你的用户反应页面刷不出来你会如何排查

  10. 判断一颗二叉树是否为平衡二叉树

  11. 你还会哪些语言,能来实习吗

下班前HR通知三面过了

8月7日HR面

  1. 自我介绍

  2. 非科班为什么选择做后端

  3. 都做过哪些项目

  4. 你的优点和缺点

  5. 你的未来规划

特别感谢捞我的HR,每一次面试结果都第一时间反馈给我,还主动帮我早点约面和催结果!

写个面经攒攒人品,大家一起加油,哪里跌倒哪里爬起来。'


1.vector底层实现原理 怎么扩容 插入时间复杂度是多少 扩容会有影响吗?
2.输入网址到页面生成发生的事情?
3.ip寻址和mac寻址有什么不同,怎么实现的?
4.ping需要100ms 则从输入地址到返回页面需要多久?
5.内存结构怎么分布的 全局变量和静态变量放在一起吗?堆和栈之间是什么?线程共用栈吗?不共用的话栈都放在哪?
6.程序有bug 可以修改代码段吗?
7.字节序是什么 有什么用 怎么写代码区分大端还是小端?
8.tcp和udp的区别?

9.tcp怎么保证可靠?

可能有些记不清了,就这些

不到二十分钟结束

自己太菜😂

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值