腾讯音乐iOS开发一面面经
面的商业广告部,负责广告SDK开发,开局暴击问了C++继承内部如何实现...
一面面经(技术面,腾讯会议没开视频,50min)
1.项目介绍
2.C++
(1)继承的内部是怎么实现的?(不会)
(2)vector的实现原理?
(3)数组和链表的区别?
3.网络
(1)TCP和UDP的应用场景?
(2)TCP握手为什么是三次?(解释了2次为啥不行,4次又没有必要)
(3)TCP挥手为啥是四次呢?(TCP是全双工连接)
(4)TCP的拥塞控制?(慢启动、拥塞避免、快重传、快恢复)
(5)DNS系统的工作过程?(浏览器缓存->OS缓存->hosts文件->本地DNS服务器->根域名服务器->顶级域名服务器->权威域名服务器)
(6)DNS劫持如何解决?(HTTPDNS,由于 HTTPDNS 是通过 IP 直接请求 HTTP 获取服务器 A 记录地址,不存在向本地运营商询问 domain 解析过程,所以从根本避免了劫持问题)
(7)哈希表的应用场景?
(8)HTTP和HTTPS的区别?(加密传输、端口号、握手过程、开销、证书)
(9)TLS的加密过程?
(10)浏览器是如何对证书进行认证的?(浏览器安装了根证书,验证服务器证书的上一级签发机构是否是可信的,具体说来就是看证书的签名是由上一级签发机构的私钥加密的,一直向上回溯直到根证书)
(11)App也需要安装根证书吗?这个证书是从哪里来的?(要,CA机构)
4.OS
(1)如何保证线程安全?(1.互斥锁 2.原子操作 3.Volatile字段)
(2)死锁是如何产生的?(四个必要条件)
(3)线程之间是如何共享资源的?(全局变量)
(4)进程之间如何共享资源(共享内存、管道、消息队列、Socket)
5.手撕代码(共享屏幕)
(Leetcode 142)判断链表是否有环,如果有找出环的入口节点
6.开放性问题
(1)为什么投递iOS岗位?
(2)如何看待广告?
#腾讯音乐##面经##腾讯音乐娱乐##iOS工程师#