更新状态:二志愿,同cpp岗,已拿offer
笔试,二题,只记得一个
方法:状态压缩+dp
面试题
1,介绍一下智能指针?
我回答了,四种智能指针+实现原理以及缺陷和应用场景。如unique_ptr禁止了拷贝构造和赋值构造函数,为了解决auto_ptr所有权占用问题转移后,可能造成为nullptr,从而造成访问非法地址,造成意想不到的后果。如shared_ptr和weak_ptr是共同继承sp_counted_base类,该类包含use_count和weak_count,从而实现管理对象和被管理对象的引用等等。反正讲了挺多的
2,场景题,输入www.baidu.com后,如何得到返回界面的?
我大概讲了一下,DNS域名解析,先查找自己缓存,如果查找不到,就去域名解析系统查询,再到服务端获取ip。然后通过RAP协议,获取mac地址。再通过请求头请求链接,允许建立连接后,并通过请求体获取获取数据。面试官不满意,反问,这样就可以得到百度的界面了吗?
3,拷贝构造函数,讲一下?
深拷贝和浅拷贝
4,new函数失败怎么办
我答,抛出bad_alloc异常,可以通过try catch捕捉。或者通过set_new_handler函数设置函数指针处理失败后的异常。
再问:可以不抛出异常吗?
答:可以,new时,添加std::nothrow
三问,set_new_handler函数怎么实现的?
答:具体函数实现我没看,不过我猜应该是通过设置signal或者sigaction捕捉信号函数,捕捉到异常的信号后,再用回调函数处理的。
5,继续网络,tls和ssl什么区别?
答:不太清楚,我只知道ssl作为https的加密过程
问:那你讲讲?
答:ssl全称是安全套接层,https是利用它的非对称加密的公钥传递对称加密密钥,再用对称加密密钥进行通讯的。这样做的原因是非对称加密的ca认证,签名,以及发送给客户端内置根认证通信的时间太长,效率太低。而且直接传递对称加密密钥可能存在安全隐患。巴拉巴拉,说了一堆。
6,场景题,给定一堆url,用于查找,怎么做?
答:可以分文件存储,利用hash函数,hash到多个文件中,再分文件查找即可。或者用布隆过滤器映射,不过有缺点就是可能不存在,因为布隆过滤器只能查找可能存在,或者一定不存在。
打断问:布隆过滤器怎么实现?
答:利用一堆hash函数,将数据映射进去即可
问:为什么总多个hash函数?
答:防止不同的数据,hash后映射到了同一个位置。多个 hash函数可以避免这一点
问:接着说之前的问题
答:或者用char数组,将url一一映射到不同的char位
问:如何做到一一映射?
答:不太清楚(考虑了一段时间)
7,写一下快排
写了一部分,我有点忘记怎么排的了,几年没看了,面试后,重新过了一遍排序,这是我失误,没想到会考这种简单的算法
8,虚函数表讲讲?
答:主要是用于多态和菱形继承问题,可以通过虚继承,从而根据不同步长的虚函数指针映射到虚函数表里的同一个位置。
9,那什么是多态?
多态,我自己的理解,如,就像基类指针指向子类对象一样,可以通过多态的方式,统一实现不同的调用。
10,其他还有一些cpp的问题,我不太记得了。
问题有点偏,特别是tls和ssl,我之前其实看过的,但是觉得太复杂,涉及加密算法,警报系统的各种不同
总之就是挂了
全部评论
(9) 回帖