zoukankan      html  css  js  c++  java
  • 面经-字节跳动后端开发

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

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

    首先问了一些项目的情况

    Java有哪些常用的线程池

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

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

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

    追问,怎么理解分段锁?

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

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

    回答只知道ConcurrentHashMap。

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

    回答没有。

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

    回答不是很清楚。

    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看一些数据。

    像我们在校学生,平时接触不到生产上的数据和业务场景,如何提升自己

    找实习是最好的,或者自己接项目,做老师的项目。

    总结

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

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

    如果后面还有二面(呜。。。)继续更新。

  • 相关阅读:
    datetime模块
    time模块
    shelve模块
    json&pickle 序列化
    re正则
    MQ常用命令
    MQ for linux安装与卸载【转】
    Linux下安装Oracle11g服务器【转】
    PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)[转]
    [LeetCode]:116:Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/xietianhua/p/11345961.html
Copyright © 2011-2022 走看看