很久没写小作文了,不过这次真的难受,必须写一波,家人们。
刚上来就让介绍做的最好的项目,并说明最好的地方在哪里,第一感觉就有点奇怪,不过感觉也还好,然后就是一些八股啥的。直到遇到下面几个难受的时刻。。。
1、100万个用户同时访问服务器,有读有写,要求设计无锁、无竞争、保证顺序到来(大概这几个条件)。
我不是很了解这个,刚开始就说了一下无锁队列的思路,感觉不是面试官想要的答案,然后说使用redis的分布式锁那一套(其实本人对redis的了解不多,只限于小林coding的八股和一些基本操作),不过面试官直接否定了也没继续往下说,然后说如何保证有序性,我说如果不能加锁也不用cas操作的话就避免不了竞争,就加一个时间戳做排序,但是效率低,面试官说这样用户同一时间太多直接寄了,我说确实效率不够,然后面试官就不耐烦说直接放到队列里不就行了,我反驳说放队列的话还是得加锁啥的,面试官就很不耐烦说不需要,入队是原子操作,先来的先到本身有序,我当时感觉就明显有问题,说多个线程这样肯定不行的,除非这个队列本身是无锁结构或者在调用之前加锁,面试官就很一副特别无语的样子,后来想到是面试且看到面试官已经很不耐烦了我也就不继续反驳了,面试官又问我除了队列还有没有其他思路,我说没有,然后下一个问题了,期间面试官就说什么不懂就不要说了,直接就说不懂,,,表示很无语好吗,不过最离谱的还是后面。
2、问tcp如何保证可靠性?
我说超时重传,面试官马上就说怎么会是超时重传,即是说重传也是丢包重传。我当时就想丢包了长时间没收到ack不就超时了然后重传吗不过没敢说出来,然后又说了具体的重传的机制,先放到一个队列暂存,然后收到ACK之后就把相应的seg拿出来,后面重传的话就不会再重传这个seg了,面试官表示不是想要的答案,我又讲了一下选择性重传啥的,估计可能是对我无语了就换了问题,问重传的时间机制是怎样的。我回答说初始是1s,然后2/1.5倍递增。面试官直接说不对,不可能这么大,然后我说要看具体的操作系统实现,面试官怎么都不可能,然后我说详细的还要看rtt,根据rtt来计算,有一个公式,但是具体的记不清了,他说这个是。然后又问那个时间,我说我了解的是1初始值,他就非常不爽,我后面就说不知道了,然后就说我啥网络基础不好。。。
然后三个代码题。第一个记不清了,直接跳了(两个类注册回调函数,让加锁还是啥,因为感觉后面的比较简单就跳了),第二题非递归前序遍历,不知道为啥一直有问题,调了很久很久,本来心态就有点炸了真的是难受当时,下来我去力扣提交直接秒过。第三题就写了几分钟,一个凑整数m的方案数,让写一维二维两种dp,本来是比较简单的留给这道题的时间太短了没写出来(一直调第二题后面实在不行换第三题没做多久就结束了)。值得一提的是,代码平台没有输入和测试样例,我还得自己建树构造输入、样例。
最后,面试官过了一阵感觉情绪也稳定下来了,语气明显不一样,说刚才是给我压力面,说我没有准备好面试,还说还有其他的公司可以投字节啥的,让我不要因为这次面试影响心态,问有啥想反问的,我看他语气变了也不好发作就随便问了下那些需要加强的。他就说我需要多准备准备,回答问题时要想好再回答,不要有en这种语气,不懂得就不要瞎说,比如刚刚网络那个题,还问我是不是计算机的我说是,他说本科不是,是不是没学过专业课,我说我都自己学过,他说学的不好叫多学习下计网数据结构啥的(说代码题也都是简单题,这个我倒是认),然后说我二叉树的节点命名是ListNode,代码不规范(确实脑子懵了,不知道咋就写了个ListNode,我平时是很注意代码风格的啦)反正全程是真的很不爽,即使说没达到预期的话也不必那种鄙视的语气吧(可能我太敏感了?),实习到秋招先前唯一一次不爽还是wx二面的时候不过当时确实是有问题(感觉那才是压力面吧,是技术上的压力而不是态度,下来搜了一下发现确实没答到面试官的点)。不像这次面的,真的难受,一个小时四十分钟差不多,中间不少桥段记不清了,可能真宕机了,煎熬。rto那个下来搜了下似乎我也没答错?
#面试中的破防瞬间#