字节跳动后台开发日常实习1~3面经,已offer

部门:懂车帝
本人:某不知名211计算机专业本科

没有录音,纯靠印象回忆的,所以可能漏了点问题。

投递简历(6月17号)

约面(6月18号)

不得不说字节跳动的效率还是很高的,投简历后第二天晚上就接到了HR小姐姐约一面的电话。约到了隔天晚上。

一面(6月19号)

  • 自我介绍,巴拉巴拉吹了一通自己Java怎么样,结果面试官说Java不招人了,他们这个部门主要用Go和Python开发。
  • Java中HashTable、HashMap、ConcurrentHashMap的区别?ConcurrentHashMap是怎么实现线程安全的?
    面试官还是先问了个Java基础题,不过后面就再也没问过Java相关的了。
  • 讲一下TCP的三次握手和四次挥手?为什么要有TIME_WAIT阶段?为什么握手是三次挥手是四次?
  • 因为我的项目用了Websocket,问了一下Websocket的特点
  • 知道HTTP长连接吗?为什么用Websocket不用HTTP?
  • Redis有哪些数据结构?用过哪些?
  • 用过setnx吗?(我说我没用过,但知道可以实现分布式锁)
  • Redis key要设置过期时间吗?为什么?
  • 用Redis实现排行榜可以使用什么数据结构?(Zset)
  • cookie和session的区别
  • 事务的四个隔离级别?MySQL InnoDB默认的是啥?
  • 知道联合索引吗?给了个情景模拟,问是否会用到索引(最左前缀原则)
  • 聚簇索引和非聚簇索引有什么区别?InnoDB属于哪种?(这个我一直以为非聚簇索引就是辅助索引,就说InnoDB两种都有,后来复盘的时候才知道,非聚簇索引是MyISAM相对InnoDB而言的,InnoDB数据和索引放在同一个文件中,MyISAM不是)
  • 两道算法题:
    • leetcode102-二叉树的层序遍历&leetcode103-二叉树的锯齿形层次遍历
      层序遍历用BFS,锯齿形层次遍历可以用两个栈。
    • leetcode141-环形链表
      快慢指针
  • 反问环节

一面问的问题都不难,可能是我运气比较好。

一面过了不久就接到HR小姐姐的电话,说可以准备待会的二面了。(同一天晚上)

二面(6月19号)

二面主要是围绕着做过的项目来问的,并且情景模拟题问得多。

  • 自我介绍
  • 介绍一下你的两个项目
  • 项目用了Websocket,为什么要用Websocket,解决了什么问题?
  • 如果把这个项目引申到多机(分布式)上会有什么问题?
  • 如果要实现一个Websocket聊天室,应该怎么设计?如果用多机会有什么问题,如何解决?
    我答的是: 服务器之间共享一下连接的用户列表,一台服务器收到信息后将消息发给其他服务器,让其他服务器帮忙转发给自己所连接的用户。
  • 因为我把项目部署到服务器上了,面试官问:介绍一下从输入网址到进入网站经历了哪些过程?面试官明显看出我使用了Nginx反向代理了多端口服务,但是我忘了说,然后就开始引导我说了出来。
  • 为什么要使用反向代理?(1. 代理到常用的HTTPS端口 2. 解决跨域问题)
  • HTTP状态码500 502 504的含义?(这个我500记岔了)如果反向代理上游服务器没写端口,是502还是504?(我也回答错了,只要无法建立连接都是504 Gateway Timeout,502必是收到了响应)
  • 状态码499听说过没?(说没有,后来了解到这是Nginx自己定义的)
  • Nginx的特点(我说除了反向代理还有负载均衡,支持很多负载均衡的策略,然后赶紧说我对Nginx其实也不是很熟,求求面试官别追问下去了。。)
  • 当访问一个后端接口很久还没有收到响应,如何排查?
  • TCP UDP的区别
  • 你做过什么MySQL调优?(解释了一下只是了解一些理论,并没有实际调优过)
  • 给了几条SQL语句,问会不会用到索引(最左前缀原则和索引失效的一些情况)
  • 怎么看SQL的执行计划(explain)
  • 因为另一个项目中用了OpenResty,问OpenResty和Nginx的区别?(调用lua脚本)
  • 项目里用Redis做什么?用的哪种数据类型?(我还多嘴提了一下可以用来做令牌桶限流,然后因为不是很熟面试官追问了一下就赶紧投降了)
  • Redis持久化机制介绍一下
  • 消息队列为什么选择RabbitMQ?还了解其他消息队列吗?比较一下RabbitMQ和它们之间的区别?
  • 消息队列你用来干什么?可以用来干什么?(解耦、异步、削峰填谷、分布式事务)
  • linux命令
    • 在一个目录下查找一个文件用什么命令?(find)
    • 查看正在系统正在监听中的端口用什么命令(netstat、grep)
    • 一个日志文件,第二列是用户的访问IP,列与列之间用空格隔开,问统计出现最多的IP地址用哪些命令的组合?(cat读文件,sort+uniq用于排序,cut或awk用于获取第二列的文本,head用于获取排序后的第一行)
  • 进程间通信的方法有哪些?
  • 多路复用 select poll epoll的区别?
  • 两道算法题:
    • leetcode440-字典序的第K小数字(困难题,据说是字节的常考算法题,说了一下思路,没做出来)
    • leetcode53-最大子序和(前缀和,秒了)
  • 反问环节

二面完之后因为已经很晚了,面试官就叫我等通知,不会继续三面了。

三面约面(6月21号)

20号是星期六,HR可能不上班,隔了一天,21号上午打电话来约三面,约了23号晚上

三面(6月23号)

三面的面试官很严肃。。应该是Leader,做的项目被怼了个体无完肤。

  • 自我介绍
  • 能实习多久
  • 你的项目的难点是什么?
  • 项目中Docker的使用,有没有优化的空间?
  • 为什么用Websocket?为什么不用HTTP?(这个真的是每一面都问到了!我说了我认为的解决了的问题,前两面的面试官都没什么反应,但是三面这个面试官看起来不是很满意,说这不是关键)
  • Netty的原理?(NIO)
  • NIO的原理?(Java的实现方式是Windows:select、Linux系:epoll、MacOS:kqueue)
  • Netty中有多线程吗?(workerGroup,bossGroup)
  • epoll的原理?(二面之后正好补了一下epoll的原理,回答了个大概)
  • 有关注过什么开源项目吗?
  • 为什么用RabbitMQ?它的优缺点?(和二面问题大致上重了,我就顺便拓展地说了一下AMQP协议的一些概念)
  • 我们部门使用的是Go/Python,你觉得你能跟得上吗?
  • 反问环节

三面时间很短,也没问算法题,可能是leader的时间比较值钱,差点以为我挂了。。面试完不久接到HR小姐姐的电话面,感觉HR面应该不太会挂人。。只要说话好听一点就行了,面完后第二天早上收到了口头offer。

面试感受

字节跳动效率挺高的,基础知识+项目经历很重要,本来特地复习了很多Java、JVM、Java多线程相关的知识,结果都没问到😂

#字节跳动##实习##Java工程师##面经#
全部评论
明天面试,来蹭个欧气。然而我的os基础不怎么好,最近也都在准备Java,感觉要凉。
1 回复 分享
发布于 2020-06-30 22:36
楼主你的一面中的一个数据库的问题:聚簇索引和非聚簇索引有什么区别?InnoDB属于哪种?(这个我一直以为非聚簇索引就是辅助索引,就说InnoDB两种都有,后来复盘的时候才知道,非聚簇索引是MyISAM相对InnoDB而言的,InnoDB数据和索引放在同一个文件中,MyISAM不是) 按照楼主你说的这个,意思就是辅助索引不是非聚簇索引了吗?但是我看了很多文章都是说Inndob里的辅助索引也是非聚簇索引,总结应该是这样的: 1. 聚集索引与非聚集索引的区别是:叶节点是否存放一整行记录 2.InnoDB 主键使用的是聚簇索引,但是InnoDB的二级索引使用的是非聚簇索引,而MyISAM 不管是主键索引,还是二级索引使用的都是非聚簇索引。 你觉得呢?
2 回复 分享
发布于 2020-07-01 14:42
点赞 回复 分享
发布于 2020-06-30 22:56
请问楼主是哪个城市呢
点赞 回复 分享
发布于 2020-06-30 23:23
恭喜恭喜
点赞 回复 分享
发布于 2020-07-01 11:06
#字节跳动Java工程师面经# #Java工程师面经# #实习面经# 👈点击话题查看更多同类面经干货!每日面经精选,为你发掘牛客干货!
点赞 回复 分享
发布于 2020-07-01 14:41
楼主,可以给个你的开源项目链接吗
点赞 回复 分享
发布于 2020-07-01 20:10
校友
点赞 回复 分享
发布于 2020-07-01 20:23
大佬,你的项目是自己在网上做的开源项目嘛?
点赞 回复 分享
发布于 2020-10-28 12:04
实习的话有可能远程实习吗
点赞 回复 分享
发布于 2020-11-01 21:46
楼主实习转go了吗
点赞 回复 分享
发布于 2020-11-01 23:45

相关推荐

12-05 15:53
中南大学 Java
点赞 评论 收藏
分享
评论
28
156
分享
牛客网
牛客企业服务