WXG一面凉经

是我不配WXG,真的太恐怖了

时长:60min
自我介绍(5min):主要说竞赛经历,简单了解C++、OS和计网的部分基本知识。

问答题:
  • 了解C++11、C++17和C++20之间的差别吗?
  • 了解C++的STL库吗?简单介绍几个?
  • 你说 v e c t o r vector vector 底层是一个数组,请你从操作系统的角度分析系统是怎样为 v e c t o r vector vector 分配内存的?分配的内存种类是什么?为什么是这样?
  • 进程为什么比线程开销大?
  • 既然你提到了创建和回收内存,请你回答一下系统是怎么分配的?解释一下为什么这样开销大?
  • 堆区内存怎样创建/回收?为什么要回收?
  • 刚刚说到了 m a l l o c malloc malloc ,请问 m a l l o c malloc malloc 可以怎样优化?
  • 你可以从底层分析一下 m a l l o c malloc malloc 的实现,然后回答我的问题。
算法题(maybe是算法)
  • 找出 n n n 个数中出现次数最多的前10个
  • 如果 n n n 有上百亿,用任何方式都无法存储,怎么做?(提示:内存不够用,但你可以调用磁盘)
  • 写个二分吧
    i n t    n = ( i n t ) a r r . s i z e ( ) ; int\ \ n=(int)arr.size(); int  n=(int)arr.size();
    为什么要加类型强制转换?为什么假定 n n n i n t int int ?
    i n t    m i d = ( l + r ) > > 1 ; int\ \ mid=(l+r)>>1; int  mid=(l+r)>>1;
    你假定 n n n i n t int int 这里没错吗?
    答:用 l o n g   l o n g long\ long long long (告诉我不允许)
    答:用 u n s i g n e d   i n t unsigned\ int unsigned int (告诉我不允许)
    答:用 i f if if 判断 (告诉我不允许)
    答:用 ( r − l ) > > 1 + l (r-l)>>1+l (rl)>>1+l
    你认为以上你提出的方法中哪个是最优的,哪个是最差的?请从操作系统的角度分析一下原因?
  • 现在我要发送一个文件,内容是所有ASCII字符,怎样编码发送比特流?
  • 还是发送这样的文件,允许传输的字符有64种,怎么编码?
    你的做法花费太大,请给我一个更优的。
    文件中的字符是单个编码还是多个编码?
    几字符对应几比特是最优的?要求给我一个相对精确的答案。
    你认为你的这个编码适用于实际生活吗?
反问
  • 谢谢您,我没有问题了,面试可以结束了。(我只想逃)
总结

反正就是会一直深入问,第一层我就不会了,面试官依然试图引导我到第五层,没想到最算法的是二分,从计算机基础的角度理解二分。

你可能感兴趣的:(面试)