日志易二面凉经
KV存储引擎项目:
1. 你做的读写压力测试是在硬盘上还是内存上?为什么读会比写快很多?
回答因为读取的很多测试用例不在跳表元素的区间里,搜索到第一层就停止了。
2. 有没有并发功能? 没有
3. 一个表能不能存多种类型的数据?如果要做这个功能的话怎么做?
回答写一个不同类型的键值比较函数。
其他忘了
webserver项目:
1. 线程池怎么实现的? 设置线程上限,创建任务队列,封装任务类。。。
2. 线程池队列满了怎么办? 不知道,拒绝策略这块确实应该看一下的。。。
3. 如果一个客户端请求报文发到一半卡死了应该怎么办?
回答拿个缓存先把传过来的数据接一下,如果客户端长时间不发数据的话就把连接断开。
其他忘了
算法问了 二叉搜索树里找跟指定数字最接近的元素
其实直接扔进去搜就完事了。但是面试的时候太紧张了一下没想到。后面想明白了解释了一通面试官说表达不够直观。。。
vector是基于数组的,为什么它大小可以动态增长?
vector底层可以扩容,扩容时把数组大小翻个倍,然后在内存里新找一块空间,把数据拷贝过去
虚函数和普通函数哪个调用更快?
回答普通函数,因为虚函数要虚函数表寻址。
一个类含有一个普通函数和含有一个虚函数,其他成员一样,哪个类更大?
回答含虚函数的。
一个类含有一个虚函数和十个虚函数,哪种情况更大?
不知道,其实跟虚函数个数不相关,跟虚函数指针数量相关。
class A{ virtual void a(){}; int b;}; 的sizeof()?
给面试官算了一遍
追问为什么要字节对齐?
不知道,看过但记不起来了。
int *a = new int; *a=1; 问执行这个程序时系统发生了什么?
说了内存分配,然后马上问了下一个
执行完第一句后进程的实际内存会不会变化?
回答会,然后面试官提醒虚拟内存(开始没往这个方向想)
为什么存在虚拟内存的情况下执行完第一句后进程的实际内存不会变化?
回答虚拟内存面相应用程序,应用程序不直接操作物理地址。
为什么执行完第二句后进程的实际内存可能变可能不变?
不知道。
第二条语句执行为什么有时快有时慢?
我说可能是缺页异常,面试官说是因为TLB页命中的问题。
说实话给我面麻了,面试压力很大,有些该想到该讲清楚的地方都没说好。
虽然给了反问但是感觉大概率挂了,就当边面边学习了。。。
#面经##春招##日志易#