面经-字节跳动后端开发

字节跳动一面(估计凉凉了)

南京某211渣硕,第一次大厂面试给了头条。感受好多基础知识掌握的不牢靠。面试结束以后深入感觉到考前突击的方式不可取,功在平时才能厚积薄发。为了此次面试突击了两周,仍是有不少东西没有准备充分,不少基础不牢靠。之后得更加努力了。
上午十点半面试,面了一个半小时,说若是有二面,后续会再联系,但估计应该没有后续了。要学习的东西还有不少,之后继续加油吧。很喜欢字节跳动这个名字,第一次听见的时候感受颇有灵性,很是但愿能去字节的团队。此次的失败就看成对本身的激励吧。java

首先问了一些项目的状况

Java有哪些经常使用的线程池

以前还没来得及准备线程池,哭晕,直接回复不太了解,第一个问题就这么了结,实在有点过意不去。Java基础太薄弱了。面试

哪些同步的方式,就是加锁

用synchronized关键字加锁,还有分段锁。算法

追问,怎么理解分段锁?

以前只顾记概念了,没能好好理解。瞎胡说一通,说不是对整个数据段加锁,而是一段一段的加锁(面试官心里应该是奔溃的),性能比synchronized关键字好。数据库

追问,知道哪些数据结构是用分段锁的吗?数据结构

回答只知道ConcurrentHashMap。架构

追问,那它是怎么实现分段锁的,了解过吗?tcp

回答没有。性能

除了这个还有没有别的数据结构用分段锁?学习

回答不是很清楚。ui

synchronized知道怎么用吗?

以前没怎么用过,回答在方法或变量前面使用。面试官心里应该很崩溃了。

知不知道锁的可重用是一个什么样的概念?

这个真没了解过。

数据库里面的索引了解吗,能够谈谈它的结构吗

hash索引和B+树索引,若是查询单条记录的话,hash索引比较方便。查询多条记录的话B+树索引可以提升查询效率。

追问:B+树和B树什么区别?

回答:这个好像答反了,哭晕

为何使用索引查询会变快呢?

回答:自己数据库的结构是按页存储,不一样的页之间构成一个循环链表,页里面的记录也是单链表。若是不用索引而且数据量比较大的话,查询效率低。若是用B+树balabala,说的有点语无伦次。最主要缘由仍是对B+树没那么了解。

知道聚簇索引吗?

回答:聚簇索引也叫汇集索引。是以主键为索引的。

追问:主键索引和普通的索引有什么区别

回答:以主键索引查询没有回表的操做,普通索引的话好像没有回表的操做。

追问:为何主键索引就不须要回表呢,根本缘由是啥?

回答:好像是数据库里面是以主键存储的。面试官:大体是这个意思

讲一下tcp三次握手四次挥手

三次握手主要是为了通讯双方创建一个可靠的通讯信道。第一次握手balabala,第二次balabala,第三次balabala。

四次挥手balabala

追问:为何握手要三次,改为两次行不行?

回答:没理解面试官的意思,答偏了。直接说的两次握手的话接收端没法确认本身是否是发送成功,发送端是否是成功接收。

追问:两次的话断开会有什么问题?

个人回答仍是创建在三次握手的基础之上来思考的,没有抛开三次握手的概念。

算法题,二叉树的序列化与反序列化

昨天基友刚答过这题,今天又来了。早上还瞄过一眼,感受应该不会再出现吧,但没想到仍是出现了。用的是前序遍历的方式对二叉树进行序列化,反序列化的时候感受也挺顺利的,但后面执行出现了一个bug,好像是有个递归的出口没考虑到,网页上写代码又不像用IDE,还能够debug,一时半会没找到缘由,期间还问了面试官StringBuilder在哪一个包下。。。再加上遇到问题解决不了,有点紧张,卡了好久。最后让我回头再调试。仍是不能太依赖于IDE,要学会在没有IDE的状况下写代码。

用过kafka对吧,了解kafka吗

搭过集群。producer往broker的特定topic发数据,consumer从topic读数据。

问:知道什么是consumer group吗?

这个问题答得也很差,多是有点慌了。有点语无伦次,答非所问。

问:kafka的offset怎么管理知道吗?

听错问题了,觉得问的kafka集群怎么管理。答zookeeper。。。

追问:除了zookeeper有没有其余方式

答:只用过zookeeper。

问:topic的offset怎么与consumer group对应上的?

乱答一通

问:offset是和什么绑定的?

可能面试官知道我理解错他的意思答偏了,又进一步引导了一下。当时脑子都乱了,说了一些offset的读取策略,也不知道对不对。往文件里面写。

感受这一块问题仍是由于本身平时理解的不够深刻,光顾着使用,却忘记总结了。若是基础好的话,不至于那么慌吧。

问我有没有什么想问的

我问了三个问题

平时工做若是忙的话,怎么学习本身的东西

会作技术分享,每月都有人会作技术分享,一个组内,每一个人按月份分享。学东西的话在工做中遇到一些问题,解决了也可以学到一些东西。

怎么学习源码,有什么策略

通常遇到问题会去源码那边跟一下,若是单纯学源码的话,最好按模块来看,架构是什么样子的。最好是可以跑起来,debug看一些数据。

像咱们在校学生,平时接触不到生产上的数据和业务场景,如何提高本身

找实习是最好的,或者本身接项目,作老师的项目。

总结

如今还有不少不足的地方,得抓紧时间研究了,必定要功在平时啊。广度优先的时候也要注意深度。多刷题,多总结才能走的远,基础是最重要的。

很想去字节跳动,后面继续努力吧。加油啊。

若是后面还有二面(呜。。。)继续更新。

相关文章
相关标签/搜索