岗位
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条回帖
回帖