岗位
C++开发实习岗。
职位描述
1、负责客户端在Windows/MacOS等平台的能力优化和扩展;
2、参与产品需求的讨论、评审和功能实现,对质量负责。
职位要求
1、C++基本功扎实,掌握一门脚本语言,有持续改善意识;
2、对Windows系统机制/MacOS各组件功能及实现方式有深入了解;;
3、本科及以上学历,每周实习3天以上,连续实习3个月以上。
一面
1. 浏览器刷新界面服务器如何区分两次相同的请求?
我回答的是session和cookie,他说不是这意思,就是从客户端发回来的字节序中怎么区分?
2. http和HTTPS在建立连接的时候的区别与联系。HTTPS中的S是指什么?
首先客户端通过URL访问服务器建立SSL连接。
服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
服务器利用自己的私钥解密出会话密钥。
服务器利用会话密钥加密与客户端之间的通信。
服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
服务器利用自己的私钥解密出会话密钥。
服务器利用会话密钥加密与客户端之间的通信。
3. 多线程中会对全局变量进行pad操作,请问是为啥?
当时没听懂pad是啥,面试官解释说就是padding操作,知道struct中的内存对齐吧,就是那种
4. 如何实现在服务器程序升级过程中保持与客户端的连接不断开?
5. Fork之后的父子进程的虚拟内存空间的相同与不同
6. C语言中除了malloc还有哪些获取内存的方式(不是指API的不同,而是获取内存方式的不同)
开始的时候我回答realloc, calloc, new, allocator,他说这些都是底层封装malloc,他问的是那种底层实现就不一样的。然后提示了我一下mmap,我说就是那种文件映射,共享内存,他说共享内存算是一种。其他的是真不知道了我就。
7. 一个线程是如何被挂起的?
8. 一个进程是如何被挂起的?
9. PV操作是怎么实现的?
10. 多核处理器的缓存行是怎么实现的?
11. 介绍一下自旋锁与互斥锁
12. C++线程中的几种锁
13. 介绍一下条件变量
14. 数据库中有两个关联列,请问在搜索时,这两个关联列会怎样?(不懂数据库,大概意思就是这)
二面
1. 介绍自己做过的项目
2. 一道算法题
全部评论
(9) 回帖