背景交代:
又是裸面,有了同花顺的经历,就按照同花顺的面试内容,面试早上的时候小小的看了一下。。。没想到会死得这么难看。。。
下午记录的,忘记了一部分内容,把回忆到的先记录下来。
在线面试一面面试内容:(早上11点)
- 介绍一下你自己
- 有哪些排序算法 答:(排序算法都没准备)冒泡、选择、快排、归并等
- 手写一下快排和归并排序,给你10分钟 答:没准备,写了20分钟只写出了快拍。。。(漫长的沉默)
- 数据库会吗? 答:了解一点。
数据库ACID知道吗?
答:忘记了。
数据库用什么数据结构实现的?
答:树吧,二叉树。
二叉树?是B+树,B+树知道吗?
答:(考完研忘记了)了解一点。
那数据库联结操作知道吗?等值联结?
答:好像忘了。应该是表合并吧。
没错,就是将两个表相同键值的元素拼接起来。你实现一下这个等值联结,怎么实现?输入的列的某值,输出是整行元素。
答:①for循环遍历;②可以用map进行键值映射;③进行排序,始终保持存放数据的有序。
(漫长的沉默)
- 5.操作系统linux会吗?
答:了解一点。
755什么意思?
答:…(一脸懵逼)应该是读写删权限吧。
是吗?
应该是的。(开始瞎他么扯了)
(漫长的沉默)
- 进程和线程有什么区别?
进程是程序的一次执行,是资源调度单位,一个进程一个PCB;线程更轻量级,可以使用资源,但不能调度资源。(凭考研印象瞎扯)
(漫长的沉默)
- 你让我问你什么呢?你擅长什么呢?
答:… 那应该是C++——(排序没想出来马上补了一句)——….语法吧。
那虚函数和普通函数有什么区别?
答:balabala
我又不懂C++,你说了我也不懂。(这不是C++的面试吗,那你问啥。。。)
答:…(长长的沉默)(由于前面排序没写出来,我感觉已经凉了,开启自闭模式)那我给你介绍一下简历吧。
行。
Balabala度秒如年balabala。
- 你现在大三还是大四?
答:大四。
你考研还是找工作啊?
答:考完了。。。
看你简历为什么不保研?
答。。。(这和面试有什么关系吗)balabala
你是哪里人?
答:Balabala。。
(漫长的沉默)
一面面试总结:
感觉必挂无疑,场面沉默而又尴尬,我恨不得把电话面试直接挂了。字节跳动的面试内容和同花顺的面试内容完全不一样。同花顺公司面试内容更偏向工程方向,比如C++的语法啊C++的设计模式啊,比如相关C++的工程项目经验与经历,对业务能力的处理以及C++编码经验与高性能高并发工具的学习注重、在意;而字节跳动对于基本算法(比如排序)、数据库的相关与底层相关基础内容比较重视。按照同花顺公司的面试内容准备,结果一点都没用上。。。
最重要的,是自己态度不端正,准备不充分。裸奔面试狂魔。
一面中,四处漂泊者屏幕之间的沉默与尴尬。这头是我扑街、蛋疼、无话可说,那头是面试官也不知从何而问。真是一场别开生面的面试呀!
面试结束我就快乐的去吃饭了。
在线面试一面面试内容:(下午1点)
1点17分收到面试通知,以为必跪就在吃饭看电影没看见;
然后收到电话叫我二面。。。我收拾一下开机放下了手中的饭。。。
十分钟后开始面试。
这次面试更加偏向简单的算法吧。
- 首先,自我介绍一下。
- 问项目中有没有用数据库。 答:团队的时候给队友搞了,自己不是很精通,课程设计倒是用过。
- 那就是数据库底层不了解咯? 答:对的。
- 那SQL语句会吗 答:了解一点。
- 求:一个班级,某科目的平均成绩大于某值,的科目内容。说明一下SQL语句思路。
答: SELECT 科目 WHERE 班级=XXX AND AVERAGE(SUBJECT)>XXX
错了,因为你不知科目有几门
答:建表的时候,几列就表示有几门课(其实SQL语句都忘了)
-
哈希算法用什么数据结构好。
答:数组。
- 哈希的时候,如何删除元素?
答:哈希下去,到表尾删除元素,或者找到元素,将标记位更改。
哈希这个动作是线程安全的吗?
答:读动作是安全的,写动作不安全,可以加锁。
给每个数组中的位置分别加锁,还是一个数组加一把锁。
答:应该都可以,前者方便,后者可以实现更多的线程并发,但可能产生死锁。
- 写一下线程的单例设计模式把。
答:balalal。(好像写错了)
- 100W个数,找出前10个最小的。 (此处耽搁10分钟 以上)
答:①遍历;②排序;③多线程;④归并的思路(没说清楚)
如果是N个数找出前K个最小的呢?遍历速度是多少?能不能优化
答:O(NK),排序能变成O(NlogN)
能不能不排序?
(我以为能有什么方法能够小于O(N),反正没想出来是那么速度能比O(NlogN)快)
还有什么办法?还能不能更优化?
-
长度为N的链表,隔K个数反转一次,例如123456,K为3就会变成321654
答:我只想到了模拟一遍,但是这样太慢了,一直想优化的方法,没想到
你没做过算法吗?你不会链表吗?
答:做过,但是这个链表相关的做的不多(先入为主acm的题库了)
不会啊,链表题目最多才对。。。
答:。。。(还是没想出小于或等于O(N)的方法,以为遍历一遍肯定超过O(N),没细想下去,一直在想什么巧妙的方法。 面试结束才想起来,链表头插法具有将链表倒置的作用。。。
- 你有什么问题
问上述问题的解法,面试官叫我自己百度。。。
面试结果:二面不通过。。。X﹏X
二面面试总结:
不管是哪一面,字节跳动的面试对数据库还是很看重的。编码能力要求还好,训练一下找回感觉我觉得就OK了。(虽然这次爆炸)。
和同花顺公司的面试做个比较吧:
不同之处在于,同花顺公司如上文所说,更侧重于对业务的编码实现能力要求,对于基本算法基本数据结构几乎不问的。。。 ;字节跳动公司就会问基础性数据结构啊,会对应聘者的算法能力有要求,这个能力差不多相当于考研的机试程度吧,以及对数据库、加入了额外的要求(都说了不会数据库还问了那么多数据库,可见一斑);
而他们的共同之处在于都对线程开发有一定要求,最常见的就是多线程有哪些不同的写法啊,线程加锁有哪些不同的写法啊,线程安全线程死锁相关的问题吧;
面试官在面试的时候,都喜欢“嗯嗯嗯“然后不说话,等你继续优化或者往下说,这招太搞了。我有时候就傻不拉几的等面试官说话。。。懒得接茬。。。
字节跳动面试虽然结束了,如愿的受到了打击。这才是面试应当有的打击感,我很需要这种被现实怒扇耳光的感觉。
这场面试,告诉我正常求职并不简单:对多科知识有要求;
但又不是很艰难:深入层次还是能够触及的,不存在什么难如登天的说法。