字节跳动后台开发实习生二面

245 阅读6分钟

上来自我介绍+问下项目

我说可以上传视频,音频后他就抓着不放,问些怎么存储,我说存id在数据库,然后通过id去磁盘找 然后问我linux服务器是单线程多线程,我说多线程,貌似就开始扯到select poll epoll了,我是真的有看!!! 还花了点时间的,但是网上每个博客感觉都不一样,我自己摄取的知识也没多少,就简单答了一下epoll是select 和poll的改进版,然后前两个是同步阻塞之类的云云,我也不知道我回答的啥,反正很片面。 面试官比较严肃,经常会反复确认我的答案。 经常怼我linux这块,我也有点顶不住,我就委婉的和他说,我项目主要是在本地跑,然后通过svn上传,linux部署 主要不是我在做。 他才放过了我,然后开始问我:访问一个获取pdf文档的网址,具体过程,我只答了dns寻址的过程, 貌似他想问我运输层的一些事情,问我用的什么协议,我说TCP。就没深入问我。 线程和进程的区别 问我事务回滚的底层是怎么实现。。我就猜说可能磁盘有保存运行的命令,然后如果要回滚, 就会去获取这部分的命令;或者说可能是自己在内存里先跑了一遍看看有没有问题,没在数据库跑(这个回答够傻。。。讲到这里我就停了,感觉自己满嘴跑火车) 紧接着就是又是一波三次握手,四次挥手,为什么要等待(看来是计网的最基础,也是最应该深挖的部分) 上一次面试只是问的最基础的常识,二面开始拓展了: 问我可不可以由服务器发起关闭,我愣了一会就说可能,然后立马追问如果服务器发起关闭的话,会出现什么问题? 我就心头一紧,肯定答错了,我就说我用python写爬虫的时候,经常会爬着爬着,就连接不上了,我就觉得是服务器关闭了对我的连接, 但是在tcp中好像没有听说可以从服务器发起关闭请求。 面试官貌似有点无语,应该看出我想回旋,而且我有点答非所问。他没有继续深追。 还有问我三次握手里面的一个什么等待区的一个block什么的参数。。。完全懵逼 还问我四次挥手为什么需要等待,我就说需要客户端需要确保服务器收到了确认关闭的信息, 避免占用服务器的资源。他就问我占用谁的资源?我说服务器,他就问我是服务器是吧?。。。可怕。

算法题: (1)1>2>3>4>5 单向链表 返回1>5>2>4>3,也就是前面取一个,后面取一个 我一开始就和他说了两个思路,一个是暴力,用数组存,空间复杂度是O(N),时间复杂度是O(n^2) 另一个是空间复杂度是O(1),但是时间复杂度是O(N^2) 就是先记录2,遍历一遍找到尾节点,让1指向5,让5指向2这样循环 本来就像开始敲代码的,我敲了一两行,面试官说,我在给你三分钟时间,想一想有没有更优的。 我就想到了,一个快指针,一个慢指针,快的是慢的两倍,那么当快的走到了尾节点,慢刚好在一半。把慢的 到尾部的这半部分链表翻转过来,就变成了1>2 5>4>3,然后我让1连5,5连2,循环。时间复杂度 是o(n),空间复杂度是o(1)

(2)n个房间成一排,每个房间都有人,取最少房间的人,帮他们全部安排新房间, 比如【5 4 6 7】这样,那么第二个房间最少人,变成5 0 6 7,然后从后面一个房间开始放,一直这样循环, 直到放完为止,得到一个新的每个房间的人数。求原来的每个房间的人数。 面试官给的示例是:6 3 1 2。 因为说时间比较紧,就让我说思路就行。我想了一会就说,新的数组最小的数肯定原来是最少人的房间。 然后我就回去遍历,只要保证这个房间数还是最小的就行。 我现在复盘,发现可以优化啊,全部取出的意思就是房间为空了!!!那么我可以用乘法把新数组最小的那个数乘于 数组长度,然后再看看需不需要往回遍历。哎,有点难受。

结尾面试官照常问我有什么问题。 我也照常问我有什么地方需要加强,面试官也很给力的把后台该会的都说了,意思是我基础还是太差了。 面试官说你想问什么都可以问的。但是我还没想好,本来想现场考虑下还需要问什么,或者说暂时没有。 面试官就转移话题了,聊到了面试这一块,我就讲了下我准备面试的经历,4月中旬开始,腾讯笔试过了,在一面挂了,因为刚开始没准备。 字节一二面,一共三次面试的经历。(现在细想下,不应该说腾讯面试挂了,感觉不太好。腾讯一面挂了?我为啥要你?) 后面貌似在看我的简历,说我算法可以,还参加过比赛,不错。 但是一直强调说我是大三,还有时间,你这些回去要好好看看。这是要挂我的意思吗?QAQ

自我总结:还是没有深入到底层去了解实现,基本面试官一深入就答不上来,偶尔能说下自己的看法,但是感觉 面试官不是很喜欢假设,我认为,这样的东西,不过也总比没有一点回答好吧?大部分问的,我在实际开发中的确 没有碰到过,第一是我项目经验可能比较少,第二老师的项目也只是单台机器,运用不到分布式那些功能,第三没有 去看过实际的linux服务器运行项目的机器上操作过,对linux也很不熟悉。面试官建议我搞后台还是需要多多注意linux这块。