一面 视频面 3.18
算法题(给40min,30min左右写完了)
字符串压缩,对字符串进行原地压缩,比如AAAABCCC,压缩后A4BC3,空间复杂度要求O(1)。
删除链表中的重复元素,重复元素不保留
编辑距离
计算机八股(20min)
1.new和malloc区别
2.了解c++11的什么特性
3.堆和栈的区别
4.虚函数,多态
5.tcp/ip四层模型
6.tcp三次握手
7.time_wait
8.InnoDB和MyISAM区别
(好像没有,这部分有点忘记了)
智力题(20min)
有20个银币,有1个金币,他们堆在一起,金币在最下面放着,你和小明玩,你先手。
下面是两个规则:
(1、每次最少取一个,最多取四个,不能不取
(2、金币和银币不能同时取
问怎么取,你能保证取到最后一个金币
这一面过了
二面 电话面 3.25
算法题(给40min,35min写完了)
对于两个存有非负数的逆序数字的链表,对它们两个逐位计算求和,返回一个逆序链表
求一个字符串的最长不重复子串的长度,子串里的元素最多出现一次。
给一个链表,每k个元素进行区间翻转,结尾不足k个的保持不变。
给定一个数组,使得数组中元素往右移动k个元素。(当时怕时间不够,用了一个vector存移动后的值,然后在赋值给原来的,复盘的时候面试官让我思考如何原地移动)
上面四道题代码复盘(20min)
期间问了一些代码中c++的东西,比如nullptr,vector底层等等..
计算机八股(40min)
虚函数
define,C++文件编译过程
编译时候,链接阶段,说一下静态链接和动态链接
动态链接时候,怎么去找到要调用的库,是怎么处理的,如何与这个可执行的二进制文件结合到一起。(不会)
进程的概念
进程的内存空间分部
了解select、epoll(不了解网络编程)
说一下对线程了解的东西(扯了一下为什么要有线程,线程和进程的区别和关联)
线程间的通信
怎么实现多线程访问临界区
对除了信号量,其他访问临界区方式还知道什么(这方面不太会)
磁盘里的数据易丢失,或者磁盘写错了,或者磁盘坏掉了,操作系统是怎么处理应对的(不会)
缓存(回答说不了解,只知道虚拟内存,然后让我介绍自己的了解,介绍了虚拟内存的概念,局部性原理,快表,多级页表,如何从逻辑地址找物理地址)
http建立链接的过程
http的内容(请求行、请求头、请求体)
http1.0、http1.1、http2.0
如果是你,如何设计http2.0的头部压缩(说了哈夫曼编码或者字典树)
在acm主学哪一方面(说都有涉及,但都没深入)
floyd、dijkstra、spfa选两种说一下(说了dijkstra,floyd算法思想)
全部评论
(14) 回帖