## 字节面试(一面)
2021.6.9号面试,面试前一个礼拜hr加了我微信,然后约了这个时间面试,时间也比较紧,字节一共三轮技术面+一轮hr面,一般一轮技术面一到两天就可以出结果,整个流程一个礼拜可以结束。
我确实是没特别准备好,最明显的一面就是这几天我一直在准备背网上的“八股文”,但其实我感觉如果你面试前准备这个已经晚了,这些网上搜到的面试点应该是最基础的,剩下的要全力准备自己简历上面写到的东西了。
本人中流211科班本科生,学分绩中等。因为准备读研究生,想这参加几个实习感受一下就业的氛围。
**面试时候掌握技能:**
①因为学校一些课程设计一般都是使用c++,而且我想从事C++岗位,比较喜欢偏底层的应用,但其实掌握的很一般,matlab仅限于会敲一些基本代码的水平,Linux也就会基本的shell编程,写一写系统调用等等小功能。
②计算机专业课都学过,学的时候还学得比较认真,大概也就是期末考试八十几的水平。例如:计算机网络,操作系统,组成原理,数据结构等等。数据结构毋庸置疑肯定得需要掌握的吧,所有公司面试都会问这个,大厂问的会更深。
现在开始正片,因为我简历上写了一个图形学的项目,所以他就先问这个点,但是最不该的就是我之前一直背“八股文”,我知道简历上的项目一定要好好准备,但最终还是轻敌了,他一个最简单的问题我没有答出来。
1、先自我介绍,我巴拉巴拉一堆。
2、不确定面试官有没有看到我简历,他说让我介绍一个大学期间做的项目,很贴心跟我讲学校的一些小课程设也可以(这些我简历里面也写了),然后我开始介绍图形学的项目。
3、问我图学里面锐化是什么。
答:好像就是让图像的一些棱角更鲜明,跟平滑相对应,平滑就是让图像一些地方看起来模糊一点,避免出现特别突兀的现象。
追问:然后呢,还有什么要补充的吗。
答:可能不大记得了。(确实忘记了,面试完我才想起来,学习数字图像处理的时候,还用matlab写了直方图均衡化等等图像平滑锐化的程序,结果搞忘了。第一个问题面试官应该很不满意)。
4、问我c++里面多态性是什么。
答:c++多态就类似于电脑的usb接口,一个接口可以连鼠标、键盘等等多个东西。c++里面实现多态是使用虚函数实现的。
追问:只能用虚函数实现吗。
答:应该是吧,我记着虚函数就是实现多态性。(c++里面父类子类的继承也可以实现多态,虚函数,抽象类,覆盖,模板(重载和多态无关)这些都是实现多态的方法。我不知道面试官是不是想得到这个答案,结果但是失误了,没答出来。感觉他不是特别满意)
5、问:接上个问题,好那你来说说虚函数是什么。
答:就是在一个基类里面声明一个虚函数,用virtual声明,然后后续在其他类里面可以重新定义这个函数,实现重写的一个效果,虚函数可以重写覆盖,然后虚函数可以扩大内存空间 (这里面试时候说错了,我感觉虚函数是逻辑上可以扩大逻辑空间,而不是物理上扩大空间),然后因为虚函数对应这个虚函数表,调用虚函数的时候可以从虚函数表里找到对应你需要的函数,保证正确。
6、接上个问题,你说虚函数可以扩大内存空间吗?
答:我记得是的吧。。。o.o尴尬了。
回复:好的。
7、给了我一个先写的类和虚函数的代码,问我目测这个能不能跑通。
答:(我看了代码感觉是没有问题的)应该可以吧,我觉着没有问题。(这里我也不知道回答的对不对,他也没继续说这个了,就是一个类的调用啊,子类继承啊等这些基础的代码)
8、好的,那我们现在来做一个算法题吧。实现链表list。因为在牛客面试的,直接在空白的编译器上面写。
答:我想了一段时间,确实没有思路,我就写了class,准备用模板实现。
回复:你可以先不用模板这些实现,用其他的实现。
答:啊不好意思面试官,这个我写不知道,没什么思路。(我当时是有思路的,我想到最笨的法子,我用数组实现,list的pop啊等操作我可以写函数实现,但是面试没经验觉着太傻了就没写,后面一想只要你有思路你就写就行)。
9、面试官现写了一小段五行左右的智能指针shared_ptr声明调用的一小段代码,问我能不能跑通。
答:面试前,我只了解了智能指针有哪几个,每一个是干什么的,没有写过这个代码,我就老实介绍了智能指针有哪几个巴拉巴拉的,但是一般写代码的使用没怎么用到这个,所以我看不出来。
回复:好的那下一个问题。
10、说一下map和hash_map的原理吧。
答:c++新版本一般都是用unordered_map嘛,这个我掌握的还行。hash_map是基于hash表实现的,所以他里面的元素都是无序的,但是因为hash表实现,所以他的插入等一些操作的速度都要比map快。
map是基于红黑树实现的,红黑树也是二叉排序树的升级版,节点分为红色和黑色,然后红黑树有五个特性,基于这个五个特性保证了任何一条路径不会比其他路径长两倍,所以他可以在nlogn里面完成那些基本操作。
追问:好的那你说hash_map里面是hash表实现,那这个hash表是怎么实现的呢。
答:(这问题确实问的有点蒙我没听懂什么意思)啊不好意思面试官,我没能理解你说的什么意思,你可以解释下吗。
回复:嗷嗷,就是你hash表插入的时候可能会导致冲突啊等,这些是怎么解决的呢。
答:奥面试官,因为我也没有特别研究这个但我知道hash散列表因为有映射函数吗,我们正常的映射就是一对一,下标对应,如果数据比较复杂可以改变我们的映射函数,比如说取余啊、乘以几取模等等,然后好像有一个解决冲突的方法就是,我正常还没涉及到那么复杂的东西,一般情况下设计一个好的映射函数可以解决很多问题叭。(因为我看过算法导论,这些都是算法导论散列表那一章的内容,因为我看不下去,一章全是数学公式看的烦人,所以没有深究只知道这些了)
11、问我static变量初始化的时候在什么时候声明,就是子类调用的时候,是在父类实现还是子类里初始化。(大概就是这个意思,具体记不到了,我也没答出来)
答:啊不好意思,这个我不是特别清晰,我感觉应该是在父类里面初始化吧,因为我记着在类继承什么的时候,都是先初始化父类里面的内容,我感觉这个也是这样。
12、最后给我退了一道leetcode的算法题,算法题不难大概leetcode中等难度。
这里我感觉我犯了什么大病,我有点紧张,拿到题我想着有没有好的解法,我想着暴力太傻了。结果想了五分钟没结果,我就说不好意思面试官,我先用最傻的法子写一下看看。
然后两分钟写了一个暴力解法,结果一交,过了,我傻了早知道我直接写这个了。
面试官问我还有没有更好的解法。
我把暴力写完马上出来思路了,刚好面试时候问道了map,我用map映射结果了一边,耗时比第一次少了(代码我不大记得了,复杂度我当时也没有算到,如果经常刷题的我建议多培养自己,拿到不太复杂代码可能一眼看出复杂度的能力,还有一些数据结构的复杂度也要牢记)。
面试官:好的思路是对的哈
-------------------------------------------------------------------------------------------
然后第一次面试就结束了.
**总结:**
总的体验,这个面试官还是比较和蔼的,没有特别严厉,体验不错,主要自己太菜,希望下一次有一个好的表现,还有一个教训就是算法题第一遍没思路第一遍一定暴力解,不要费太多时间,算法题做得快是很加分的。
自己平时没事就去看看面经,基本的“八股文”要在面试的时候很熟了,不要临时还在看这些,主要自己简历上写到的东西一定要深入了解,甚至从这个方向的由来,有哪些名人有什么成就,最新的技术是什么等等。
大家看到了有什么想法可以互相交流。
全部评论
(2) 回帖