有三个项目三个实习,但全程几乎没问任何实习、项目、八股。1. 如何让一个数字快速对 512 取模?可以与(512-1)做按位与。2. 如果是任意数字呢,在不用取模和除法的条件下,实现 n%m?可以使用 n 不断减去 m,但这样复杂度很高,因此可以用二分优化。3. 还有更好的办法么?感觉想不出更好的方法,如果 m 是 2 的整数次幂可以用刚刚类似的方法。4. 代码写一下吧(还有很多额外的限制记不清楚了,比如不能用任何超过 32 位长度的类型)写的二分但是没有写完,写到一半面试官说算了这个问题过吧(感觉想要的不是二分而是更好的办法)5. 一个三万个节点的链表如何找到第两万大?一开始想错了说要放到数组用 select 算法,后来反应过来说直接对链表用 select ,说了一遍过程。6. 这样会破坏原始链表结构,有办法不破坏么可以把每次下一阶段需要的链表额外存下来,但最坏情况下需要额外的三万空间。7.这样会使得使用的空间更多,有更好的办法么?可以用优先队列,只用两万的空间,然后说了一下用优先队列的方案,核心就是两万了以后,再加进来的时候和堆顶元素对比下就行,不会超过两万。8. 空间还能比两万更少么?(尝试说了一些,没有答到点上,面试官直接说算了)9. 你知道内存池的作用么,为什么需要内存池?八股直接回答10.如果让你实现内存池你会怎么实现,要求能动态调整池大小?(回答了一些自己的思路,基本就是链表,想了很多种优化加上去。)11. 用 c++实现你刚刚说的思路,不一定能运行伪代码就可以。(c++大概写了一下但是写的很差被找出来很多问题,比如这是内存池里面链表的维护不能用 new)反问环节:1. 假如我能被录取,希望我承担什么工作?答: 这个问题问的太早了。