本人之前从未面试过,这次先冒险投了字节,几乎是抱着积累经验和技术交流的心态去了(顺便还妄想字节可以瞎了眼给我个offer呢),然而既没有实力,又没有运气,也是理所应当地挂了。
另外真心请求点开这篇文章的大佬们可以针对我对未来的迷茫和疑惑提点建议(在最后的「后记」这里,可能也有比较幼稚的想法,希望大佬们海涵),让我能够把这俩月暑假好好利用起来。在此谢谢阅读这篇文章的各位大佬了。
总体流程
- 2021.6.11 投递简历(内推),由于我是21届毕业生,投到了社招岗
- 2021.6.17 hr第一次电话,询问我的情况(我是保研的吗,导师是否同意实习等),没有约面
- 2021.6.22 hr约面,把之前投递的社招岗转到日常实习岗,一面约到周五(2021.6.25)下午2点
- 2021.6.24 hr再打电话,说25号下午面试官要开会,把一面时间改到了下周二(2021.6.29)下午5点
- 2021.6.29 17:00 一面
- 2021.6.30 10:30 hr打电话约二面,二面约到了这周四(2021.7.1)上午11点
- 2021.7.1 11:00 二面(此后一直没收到电话,隐约觉得挂了)
- 2021.7.2 17:18 已挂,并收到感谢信
一面(80min)
一面面试官发量稀少,刚开完会(所以迟到了10min),还带着工牌,把我吓到了
自我介绍
学校、专业、编程语言、项目(这里结巴了,因为我说一句,面试官嗯一下,还是人生第一次面试,害怕)
为什么要投递这个岗位,并表明了很强烈的想去字节跳动实习的欲望,想尽快入职
项目(20min)
项目没复习好,导致在RSA这里被狂怼,这些是由项目引申出来的问题:
- RSA密钥怎么协商的?
- 有考虑过中间人攻击吗?
- 没
- 那你可以说一下什么是中间人攻击吗?
- RSA的原理?
- 没复习,就是回答了基于大数乘、大数模运算的原理
- RSA的安全性靠什么保证?
- 大数因式分解较难
- 为什么要结合对称加密和非对称加密?
- 老八股文了
- RSA除了能用来加密传输数据,还能用来干什么?(我说:还有数字签名)
- 数字签名是什么?(忘了,我是zz,https证书里面的数字签名就是啊)
基础(20min)
- 进程切换的时机?
- 回答了分给进程的CPU时间片用完了、进程因为等待某个事件的就绪而阻塞(比如说某些I/O事件)
- 操作系统如何处理中断?
- 一个进程切换到另一个进程,如何找到另一个进程要执行的地址?(通过pc寄存器,保存下一条指令的地址)
- 为什么要保护现场?
- 因为不保护现场,就没有办法恢复到原来执行的位置和状态。
- 平时常用C++是吧,那我问你malloc分配了1G内存,物理内存4G,还剩多少G?
- 首先我回答的是根据用户态空间3G,内核态空间1G来说,那就应该剩下2G?
- 面试官说不对,只考虑物理内存4G,malloc分配了内存空间之后,之际的物理内存空间有变化吗?
- 考虑到malloc只是先建立虚拟地址和物理地址的映射关系,所以我就瞎答,只建立了物理页和虚拟页的映射,如果不读写堆区,那就没啥变化;否则就会触发缺页中断,将需要的内容调入内存
- 如果真的有变化,那就是建立了物理页和虚拟页的映射???
- 平时一般用Python干什么?
- 小工具:例如数据处理、爬虫等
- c程序如何编译成可执行文件?
- 预处理
- 编译(这里一下子带过去了)
- 汇编
- 链接:顺便回答了 静态链接、动态链接 的区别
- 能否详细说一下编译的流程?
- 词法分析
- 语法分析
- 语义分析
- ……后面回答的稀烂,口吃了
- 知道xxx吗?(是一个编译领域的专有名词,SSS?还是什么的,不记得了)
- 我说我没学过这个
智力题、算法题(40min,各20min)
都是在聊天框里面出的题
一个岛上有红黄蓝三种颜色的兔子,数量分别为a,b,c,任意两只不同颜色的兔子碰撞变成两只第三种颜色的兔子,a,b,c满足什么样的关系可以使得有可能经过足够长时间的碰撞,岛上最终都是一种颜色的兔子
- 面试官提示了很多次,就是没想出来,想了20min都没出来,面试官就说那就看下一个编程题吧,给你来个简单点的
有n个任务,每个任务有开始和结束时间,如何安排任务的顺序,使得完成的任务个数是最多的,例如:
[(5, 10), (6, 9), (7, 8), (9, 11)]
- 面试官说,先给思路再写代码。
- 就是个简单的贪心算法,按照结束时间排序
- 我是个zz,最初说了个按开始时间排序,最后让面试官提示了才知道
- 然后面试官说,你可以思考一下为什么要按照结束时间排序
- 我的回答是,这是一种贪心策略,先完成早结束的任务,才可能开始做后面的任务
- 面试官:好吧,那就写代码吧
- 我问:要自己处理输入输出吗?面试官说,不用,把答案写死就行
- 写了十几分钟吧,几乎是面向测试用例编程,写的时候还总是犯语法错误,能感受到面试官关爱智障的眼神
- 好不容易才输出来答案,面试官说没什么问题
反问
- 想了解一下你们部门的业务,常用的编程语言、技术栈
- 国际化电商(不说我也知道啊,岗位上不都写着部门吗,我既然问了,就是想了解更具体的啊),平时用golang,也是使用基于golang的框架
- 面试完之后大概多久能知道结果?
- 这个需要先跟hr说,然后我们再商量……
- 对我今后的学习和职业规划有什么建议吗?
- 没给啥建议,但是跟我说了下面评
- 基础知识掌握的还不错,但是算法和编码能力有待加强
总结
一面面试官真的很好,很循循善诱,你不会做也要引导你做出来的那种,也愿意等我把代码写的差不多了才结束。
虽然我真的很菜,无论是真觉得我能过,还是出于看我第一次面试的份上想给我点信心,不想在一面就挂我而打击我的目的,但还是感谢一面面试官不挂之恩。
二面(60min)
二面面试官发量多一些,但还是把我挂了。
自我介绍
同样是学校、专业、编程语言、项目、为什么要投递这个岗位……
这次说的过于流畅,让面试官觉得我是背出来的,失误了
不过这次好不容易引到了epoll这里,但还是不怎么问我计网八股啊,哭了啊,明明觉得第一面应该主要考操作系统第二面就考计网了吧
项目+基础(30min)
- 你的项目中的密钥协商,和https密钥协商相比,优缺点?
- 想了一会,说优点是简单
- 缺点是密钥长度不够长。
- 你知道https为什么用SSL/TLS,不用别的吗?
- 真不知道还有别的啊。
- 为什么你的项目中的密钥协商,和https密钥协商都要采用这种加密机制?
- 对称加密和非对称加密结合的手段,老八股了。
- epoll和其他I/O多路复用机制的区别?使用场景的区别?
- 八股文
- ET和LT的区别?在编程上的区别?
- 八股文
- 前者常和非阻塞socket结合使用
- 为什么要在项目中用epoll?不用其他的机制,比如select、多线程这种的?
- 说,想入门一下,之后还会尝试其他编程手段,并从性能上进行对比
- 这个回答太糟糕了,不应该这么答的,让面试官觉得我是个编程小白
- 用过多线程吗?
- 没用过
- 进程间通信方式?(上次在操作系统这被狂怼,这次怎么还是操作系统,真的不问点计网八股吗,我就是搞网络的啊,哭了)
- 八股文
- 6种,我想都说一遍,没让说全(是觉得我要背出来吗)
- 线程间共享什么资源?
- 全局数据区的全局变量、堆区变量
- 进程中的一个线程崩了,会引发进程崩吗?
- 我说不一定,面试官说能举个例子吗
- 我想不出来,说除非是段错误这种严重的错误以外
- 应该是完全答错了,挺低级的错误,八股文里面不都有吗(进程和线程的区别)
- 你经常使用C++是吧,那你用过智能指针吗?
- 没用过,但是我了解过原理
- 面试官追问,如果没用过,你是怎么管理指针的?
- 确保new、delete成对出现
- 在构造函数中new、析构函数中delete
- 当然,以后写项目,会尽可能使用的,毕竟大一点的项目,谁也不能这么精确的控制new、delete成对出现
- 可以解释智能指针的原理吗?
- 说了shared_ptr的原理,引用计数
- 感觉没答好
- shared_ptr循环引用问题?怎么解决?
- 双向链表节点
- weak_ptr(在聊天框里面还傻逼的拼成了week_ptr,面试官还提醒我了)
- 了解数据库吗?
- 我说用的少,但是了解过部分原理,面试官没再追问
- 数据库用的不多,面试后端真的很减分
智力题、算法题(30min)
- 有100个饺子,两个人轮流拿,一次可拿1~5个,问怎么样可以保证是你自己最后拿
- 想了一会说,我一定要抢先拿4个,之后永远是对方拿x个,我拿6-x个,能保证最后是我拿
- 二叉树的最近公共祖先(LeetCode 236)
- 口述思路,分析时间复杂度,没让写代码
- 说了个递归、后序遍历的思路
- 早知道应该在这道题上多耗一会的,没准还不会挂我
- input: [1, 1, 3, 9, 10, 30, 11, 10, 10, 2] 先递增,后递减,output: 7(不重复数字的个数),空间复杂度O(1)
- 应该也是个leetcode原题(不知道是不是高频题,如果有大佬可以告诉我是哪道题吗),没做过当然就没思路了,真的太菜了
- 我就说了下我想从哪些方面入手解决,以及现在的思维障碍,是哪一块把我卡住了,然后让面试官针对这一点提示我一下,只说让我利用好「先递增,后递减」的特性,我咋知道怎么利用啊,我就是不知道怎么利用才要问的啊
- 最后说让我先暴力解决,可惜代码还没怼出来。还没写多久呢,反正我是写错了,准备推倒重来的时候,就说没时间了,就到这吧
反问
- 想了解一下你们部门的业务,常用的编程语言、技术栈
- 国际化电商,平时用golang
- 怎么跟一面面试官回答的一模一样,我想听听更深层的啊,哭了
- 如果我能通过面试,我需要提前学习什么技术/框架?
- 可以学习一些http、rpc的框架
- 都是开源框架
- 对我今后的学习和职业规划有什么建议吗?
- 计算机这一行发展的很快,要保持学习,多练习,多看开源项目,多实践,多刷题
- 然后我的回应就更糟糕了,说以后会多看开源项目的,也会多做做项目的
- 我这次的表现有什么需要改进的地方吗?
- 同上,面试官已经强烈暗示我会挂掉了
总结
反正比上次凉就对了,毕竟两道算法题的最后一道的代码没出来,问题挺大。
前面的八股也有回答不到位的,回答的有点偏背诵了,真没想到两次都问我操作系统不问别的啊,反正我最认真背的、最熟悉的计网都不考呗,数据结构、排序算法也不考呗。
毕业论文写完了的一个月才匆忙背八股,3月底到现在也就刷了150+题,没有实力,也没有运气,还妄想能够进字节,做梦吧哈。刷题刷太少了,遇到没做过的就不会了,挂了也应该。
字节真的是大厂里面最重视算法的了,不仅出的不简单,还要求反应快(对于很多普通人来说,没刷过这道题,很难临场在20min内反应出来)。在项目、实习、竞赛经历均不出众的情况下,算法题代码现场写不出来几乎是必挂的,无论你是啥学校啥专业的。
另外,这次在回答某些问题上的表现完全不是一个科班毕业生该有的样子,给了面试官缺乏实战经验和能力的印象,在面试官面前完全暴露出来自己是个编程小白的本质了。我真的太菜了,给985科班毕业生丢人了,对不起,我有罪。
哦对,面试官还说,希望我多沉淀几个月再来投(是,我今年之内都不会再投字节,几个月之后恐怕导师也不放人吧)。本科没有好好利用科班生的身份优势去多写代码然后好好找工作,光刷成绩了,在毕业之际被给了「代码能力差」的评价,算是对我这被偷走的四年的一个总结了吧,也算是一个教训了吧。
悟以往之不谏,知来者之可追。愈挫愈勇,再接再厉,明年再战。
后记
这次我投简历投的很晚的其中一个原因是,我在纠结我应该要投后端还是iOS客户端。纠结的原因无非是,我以后想做后端,后端比较卷,不那么缺人,不太喜欢我这种零基础面试者,面试难度肯定会大很多;客户端比较缺人,尤其是iOS零基础也可面试,面试难度可能也稍简单一些,但是以后不那么想做。考虑到以后确实不那么想做客户端,就义无反顾地投了后端,迈出了自己的第一步。
首先,这次我就只投了字节这一家(虽然身边的同学和朋友都建议我海投,我不听,执意只投字节,因为我身边厉害的同学也是这么干的;现在感觉人家裸面字节是真的有实力和运气,而我啥也没有,跟她们就没法比好吧,毕竟我从小到大本来运气一直就不好),而且还挂在二面了,没有了offer暑假当然就不能去实习了。看着我的本科同样是保研本校的同班同学今年年初就去了字节后端实习仨月,我这半年来就活在压力中,一直寝食难安,现在挂在二面了,就处在怀疑人生的状态。
另外是,也有朋友建议我从现在开始再多投递几家试一试,争取暑假可以出去实习,毕竟以后实习肯定是越来越难上岸的。我目前的情况是这样的:
- 二面完当天下午实验室组会,老板已经明确说了我们的暑假只有4周,如果我现在开始投递了,我能在多久之内完成流程然后去实习?假定是7月底吧,过了一个月之后,我应该以什么样的理由跟导师说我想请一个月假以至少凑够俩月呢?(毕竟想要实习,就是为了实习经历能写到简历上的,一个月除了熟悉公司的项目源码之外,感觉也做不了太多啊)
- 而且,前段时间为了准备这个面试,我已经很多天没看论文了,也没去实验室了(毕业季,导师也没有管太多),但是现在,导师开始抓进度了;我应该如何兼顾好这两件事情呢?
- 另外,根据这俩次面试的情况来看,我的项目(就是本科课设)是完全拿不出手的,即使拿相同的项目面别家可能也会被给缺乏实践的评价
所以,对于上述情况,我这个暑假还需要向别的厂继续投简历吗?如果要投简历,我要投什么样的厂?我是否应该在简历中换项目(可是我其他项目更拿不出手啊,大创也没有做)?
还是真的就如二面面试官所说让我多沉淀几个月,我在暑假开始再重学编程语言、算法、再好好做一个新的项目,然后明年暑假之后再找实习?但是我的原计划确实是,如果面字节面挂了(大概率),我就重新开始学习,重新构建一个新的知识体系,毕竟我觉得我本科的旧知识体系也不是很牢固,往深层一问就不懂了。但是还是有人建议我现在继续找实习,所以我很纠结。
实验室的老板在那次组会上也明确,我们要想出去实习,必须先发论文(无论学硕还是专硕都要求发论文毕业,最好是一作/学生一作;我是专硕,三年制)。反正我早已决定好不读博了,研究生毕业之后去大厂做后端开发(想做C++/golang的,虽然也不确定以后是不是会变啊),这也注定了我必然不想在学术上花费过多时间。
如果我想在明年暑假去实习,当然是发了一篇学生一作就有大量理由出去了,但是首先这件事又难又有风险,我们研一的课真的很多,我从现在开始这一年全心投入学术,我真的能按时发出一篇学生一作的论文出来吗(毕竟实验结果可能不如预期,而且投了会议/期刊也有不中的可能性)?如果我没有发成论文,又想去实习,我还是面临同样的问题,我应该以什么样的理由跟导师说我想多请一个月假以至少凑够俩月呢?
我需要这俩天找导师沟通一下,说明我想尽早发出论文的诉求,并商量对策吗?如果有必要,我应该怎么跟导师说?(反正我早已跟导师说过了,我想做后端开发了)
所以我应该怎么办啊?我的计划是想在研二下找暑期实习之前有一段两到三个月的大厂或中厂实习经历。在研二下找暑期实习的ddl一天比一天近,看到自己前途未卜的样子真的焦虑死了,觉得以后真的找不到工作了,也毕不了业了。
全部评论
(27) 回帖