33、问题5:构造函数、析构函数的顺序,为什么析构函数是反向的?答:构造:先父类再子类;析构:先子类再父类 。这是c++的规则 。中间做了一套笔试题,各种各样的都有 。
34、编程/算法1、一个文件无序存放了1w个数字,每行1个 。数字范围1-1w,现在随机删除2个数字 。请把他们2个找出来 。
35、答:使用hash数组,遍历文件,每遍历到一个数字,就以该数字为下标的数组元素置1,不用加1,因为数字不重复的 。最后再遍历一遍数组,值为0的元素的下标就是所求数字 。如何对你申请的内存进行优化?答:可以使用bitmap,每一bit可以代表一个数字,这样可以压缩内存 。
36、压缩率是多少?答:每个bit一个数字,而之前数组一个元素是int类型的,占32位,所以压缩率是32倍 。什么场景用bitmap?答:我说数据较为密集,而且你这里数据是连续不重复,就符合,而且你的数据是有范围的 。如果数据有重复呢?答:可以使用2-bitmap,00代表不出现,01代表出现1次,10代表出现2次,11表示无定义,这样遍历一遍就可以找到是哪几个数字他回答:不是,比如数字3,具体有多少出现,这个这需要知道的 。
37、我说:10bit可以表示的数是1024,而你每个数字不可能超过1w次 。所以要记录次数的话,就还是用bitmap但是不是1位,大概1个数用14bit吧,但相比32位一个数要好些 。oppo二面介绍u *** 的项目、功能、架构这个io复用模型跟普通多线程、多进程的区别答:io复用,多个链接复用一个线程,而普通多线程是一个链接一个线程,所以必然创建线程的数目就多,现成的创建是有开销的,所以io复用这种开销小 。
38、 *** 传输的数据协议主要有3个段,前8bit是数据type,中间是length,最后是具体的data 。如果协议是这样 。如果两个数据包连在一起,怎么分开?答:在首部再加几个bit,作为隔离位 。
39、如何实现你的fd是负载均衡的答:分类处理多个用户访问同一个资源,如何加锁答:不太明白他的意思,epoll内部处理事件是同步依次执行的,而且这里的锁是线程资源tcp是如何处理粘包?tcp是如何关闭的?就是说4次挥手过程如果tcp关闭的第四个分节没有被收到,那么怎么办?tcp的拥塞控制过程delete和free的区别1STL的出现是为了什么STL的迭代器的类型有哪几种?STLhashmap的实现?线程间同步的手段进程间通信的方式如何使用信号量 *** 出一个互斥锁系统调用的返回有什么变化?描述一下系统中断的过程c++多态是如何实现的?c++多继承是如何实现?如何处理同名变量怎么实现无锁***作你评价一下你自己 。你觉得你同学朋友如何评价你?你对哪些技术感兴趣?参加过哪些社团你怎么协调与他人的关系的?你有什么要问我的吗?百度云一面1、C++多态的实现多重继承下,多个父类含有同一同名函数,子类对象调用会有问题吗?答:首先AB2个父类中的函数假设就是普通成员函数f(),那么子类C没有自己的f函数,其对象c.f()的时候就会报错,编译报错,存在二义性 。如果C有自己的f函数,此时不会报错,调用的是自己c类的f()函数,也就是说此时父类的函数就被隐藏了 。
40、如果AB中的f()是虚函数,那么也不受影响,还是调c的 。如果2个f的参数类型也不一样,也会报二义性错误 。(为什么呢?)static变量tcp三次握手、2次、4次?tcp可靠性的实现原因滑动窗口的作用原子***作如何实现(锁、cas***作)如何实现一个互斥锁,互斥锁的实现原理想不起来了笔试:特殊链表(每个节点带一个随机指针),对该链表进行复制,输出复制后的新链表 。
41、(剑指offer原题)百度云二面1、socket和epoll的关系区别?(不太懂他意思,反正对epoll的底层进行了阐述)红黑树是线程安全的吗有哪些同步手段用过哪种锁(mutex)读写锁了解过吗,自己实现一下,提出思路即可(对读***作进行计数)计数如何保证线程安全?(cas***作、***作系统底层指令支持)vector的插入pushback的时间复杂度是多少(O(n))如果vectorpushback的时候扩容了,比如pushbackn个数,时间复杂度是多少?(我给他阐述了内存拷贝的过程,但是不知道怎么求,他回答说:其实是一个等差数列,最后求得还是O(n))vector底层是几个指针实现的(3个start、finish、end_of_storage)vector扩容几倍(SGISTL的vector是2倍)c++多态的实现(runtime的多态:指针或者引用结合虚函数表实现)c++11move语意解释一下1move除了用于指针,还可以用于哪些?比如哪些数据结构(vector)拿过哪些offer想不起来了 。360二面1、使用stl如何保证线程安全(除了锁以外)交给sub线程的文件描述符如何回收的?tcp粘包linux下查看 *** 连接linux下查看内存cpu(top)linux下查看内核版本uname-alinux下查看发行版本cat/etc/issueIO和reactor模式(吹的select和epoll)linux下进程cpu占用是怎么计算的(大致是:通过/proc/stat读取CPU总的时间,再通过/proc/pid/stat下读取进程的占用时间,做除法 。(比较粗略的阐述))linux下tmp目录里面的内容会被清除吗(会,系统会执行tmpwatch脚本,一般传入参数是时间,比如tmpwatch10/tmp/表示的就是会删除10天内没有修改、访问的文件 。
推荐阅读
- 圆柱和圆柱体是一个意思吗
- 手机充电慢的原因和解决方法OPPO oppo手机突然充电速度变慢该怎么解决
- 漩涡星系和螺旋星系有什么区别
- 宝来和C4世嘉怎么选 各有什么特色?
- 手机压缩文件格式rar和zip有什么区别 手机怎么压缩文件为rar格式
- 微信怎么收藏和一个人的聊天记录 微信如何收藏一个人的聊天记录
- 鸡翅的家常做法和配方?
- 苹果iphone7什么时候上市售价多少钱 iphone7上市时间和价格
- 云和雾的相同点是什么
- 无线ap和无线路由器覆盖范围有区别么 ap比无线路由器覆盖范围大吗
