上午打电话直接叫我去面试,我之前连笔试都没做
然后全程代码,问题很简单,但是我有很多小细节没处理好。比如string的insert erase函数...被面试官吐槽
前两道要求写出代码
后两道说思路即可
第一题是自己设计一个双向链表,并实现插入 删除 一开始忘了处理头尾节点的情况,面试官让再检查,然后补上了
第二题是字符串替换,在字符串s中找到字符串p,并替换成e 这个题问了面试官说可以用暴力,就直接暴力解了,但是忘了string的insert和erase怎么用了,太菜了...
第三题如何找链表的第k个节点,思路:倒数第k个就是正数第l-k+1个,即l-(k-1),也就是说让一个游标先走k-1步,到达第k个节点,再有另一个游标从头开始,这样当第一个游标到达最后一个节点的时候,第二个游标正好在第l-(k-1)个节点,即倒数第k个节点上
第四题场景:服务器可能被IP重放攻击,要找出访问量最大的k个IP并处理,抽象成topK问题,先哈希去重,再创建小顶堆维护k个节点即可,后面又问了需要多少内存,堆需要维护的内存直接忽略不计了,因为主要的内存消耗在创建哈希表上,当时脑子有点乱,太迷了...第一次说了个8G,后来一想肯定不对,重新算了下,应该是2^32 *8B左右
面试到这里就完了...全程没有问项目,也没有问其他的东西,代码写的不太好,回来得好好反思复盘一下