今日头条iOS面试一挂求大家指点

首先做一下自我介绍,非科班

1、堆和栈的区别是什么?

答:首先在操作系统中,栈的内存增长是向下的,堆是向上的,栈的内存分配是操作系统支持的数据结构,操作系统中具有专门的寄存器存储栈指针,以及有相应的硬件指令去操作栈内存分配,堆是程序员通过系统调用库函数对堆内存进行分配存储。栈内存速率比堆快,但是栈默认的大小比堆小很多,vs中一般默认为1M,但是大小可以在编译器中设置,堆内存比较大,一般会达到4G。相比来说一般大块内存会更多在堆上分配。

2、那堆为什么默认4G,是什么决定的?

答:这个大小和虚拟内存有关,应该是2^32计算的。

3、那我一般机器上插内存条16G,而虚拟内存只有4G,岂不是浪费?

答:应该是和多核多CPU有关?我也不太清楚

4、一个进程的地址和物理地址之间的关系是什么?

答:进程上CPU,CPU能够访问到的是进程中记录的逻辑地址,如果是页式内存管理方案,则逻辑地址包括,页号和页内偏移量,页号可以在页表中查询得到物理内存中划分的页框号,页框号+CPU基址寄存器值(进程在内存中的起始地址),结果再拼接上页内偏移量就可以得到对应的实际物理地址。

5、这样有什么更快的方法去计算物理地址?

答:有一个TLB快表,可以去记录,但是具体机制不清楚。

6、HTTP消息的header都有哪些?

答:HTTP分为请求消息和响应消息,请求消息格式:请求方法+URL+协议版本 ;响应消息格式:状态响应码+协议版本;根据请求方式不同,消息header也不同。

7、在浏览器中输入URL,发生的事情都有什么?

答:输入URL后,首先URL=协议+域名+服务器上的资源位置,因为在通信子网中是通过IP为标志进行分组转发,因此需要通过DNS进行解析出IP,封装HTTP消息请求下发到传输层,在传输数据之前需要双方简历TCP链接,链接建立完成后,根据TCP协议进行首部封装,然后下发到网络层根据IP协议进行IP数据单元封装,到数据链路层根据ARP协议对IP进行转换为MAC地址,然后加帧首帧尾巴,进行帧封装,然后到物理层转为bit流进行通信传输到目的主机,自底向上进行解封装到达应用层,根据资源位置,在服务器上查询到web对象,将HTML文档加到响应消息返回给客户端浏览器。

8.那得到了服务器返回的内容后,还做了些什么,这个只是协议建立通信的过程?

答:应该是HTML文档中的标签格式对页面进行渲染。(勉强问不可能直接渲染吧?还做了什么? 这个不清楚了)

9、HTTPS和HTTP的区别是什么?

答:HTTPS在HTTP明文传输的基础上加了SSL层进行加密数据传输。

10、SSL建立连接的过程是什么,说一下?

答:首先客户端向服务器发送自身的SSL版本以及加密参数给服务器,服务器返回自己的SSL版本和参数以及数字证书包括了服务器的公钥,客户端生成浏览器会话秘钥通过公钥进行加密返回给服务器,服务器通过私钥解密出会话秘钥,客户端再发送一个报文通知服务器以后通过该会话秘钥进行加密传输,并发送加密报文表示我方SSL链接建立完成,服务器也回复相同的表示自己也建立连接完成。

11、数字证书怎么验证?

答:数字证书也是别的机构颁发给网站,也是加密过的,需要客户端通过公钥对它解密来验证它的有效性合法性,是否过期等信息。

12、TCP和UDP的区别是什么?

答:TCP是传输控制协议,是面向字节流的可靠传输,通过分组编号,确认应答,超时重发,流量控制和拥塞控制机制保证数据分组正确有序完整的传输到接收方,UDP是用户数据包协议,不具有TCP的以上机制来保证可靠传输,是以数据报的形式发出,从最下层发出后,它认为发送成功,是不具有保序 正确和完整传输的性质。

13、P2P传输是什么?我发送数据只有你的IP,并没有你的主机号,是怎么讲数据发送到你主机?

答:我理解就是端到端传输,你首先是将数据发送到我的局域网的出口网关路由,然后进入内网,在局域网中是通过交换机进行Mac地址进行转发,识别到对应的主机。(对方不满意)

14、出个题目(智力题):一亿个数据,找出前10000个

回答topK。建立10000个元素的最大堆。。

OK那不问这个问题了,重新一个问题:一个隧道100个灯,一百个人,分别都是1-100编号,人进去按灯开关,灯编号除尽人编号,则人按开关。请问100个人全部进出隧道,最后结果是多少盏灯是亮的?

答:(我听错了以为是人编号除尽灯编号)然后人进入后对人的编号因数分解,得到的因数编号落到哪个编号上对哪个编号进行计数,最后对每个编号进行计数判断奇偶性,基数则是亮,偶数灭。但是结果没想出来。

15.那写个程序吧:写二叉树对称性判断。

写完了。。。OK那我们结束面试吧。

我问:那智力题的结果是啥?

面试官:这个你不能对人编号因数分解,是对等编号分解吧。

最后也没说结果是什么 就挂了视频。

然后过了一会HR打电话说不合适岗位,再见。

#面经##秋招##iOS工程师#
全部评论
我不明白为什么楼主一被人说背题就很生气。面试官肯定是不希望你对知识不理解只是死记硬背啊。另外我觉得楼主对背题是不是有些误解,看面经难道不是看看什么问题自己不会,然后想好怎么回答,记下来吗?你这个背法,这种宏观题肯定会往下延伸的,且不说能不能背,那种能延伸到你不会的方向少提啊,说你会的内容,起码让他问问感觉你会的挺深了才说不会,尤其是这个多少多少G的,感觉太像为了背而背了。。。。。我被面的时候追问很深的一个问题是从k8s,然后一直追到namespace,问我内核怎么实现的 还有那个不太看经验是真的,我面试头条的时候面试官就告诉我,绝大多数学生的经验我们都不看重,因为不管他们是什么经验都不是我们公司需要的经验,我们需要学得快。我因为是算法转的岗,简历上4个项目全是机器学习和NLP,面的和算法一点关系没有,面试官都没介意
2 回复
分享
发布于 2018-10-20 12:10
毫不留情的说,基本回答的都不全甚至是错的。背题的痕迹太过明显。 另外操作系统基础差。 挂的不怨
1 回复
分享
发布于 2018-10-20 13:07
OPPO
校招火热招聘中
官网直投
给我的感觉就是常见的问题会,稍微不常问的基础不会,有背题的可能。
点赞 回复
分享
发布于 2018-10-20 11:25
感觉还是对基础的理解不够,有背题的感觉,比如1M 4G都是怎么来的 虚拟地址空间 页面和堆的关系 PKI的CA 信任链等 细节上差了一点 问过面试官,说今年的招聘策略上项目经验是加分项,头条非常重视基础
点赞 回复
分享
发布于 2018-10-20 11:40
虎摸小可爱,冲鸭!
点赞 回复
分享
发布于 2018-10-20 11:45
4G那个应该是想问你cpu总线宽度吧,我觉得楼主大部分答得挺好的了,很多公司喜欢自称重视基础当玩笑话看看就好,没有好的项目经历再怎么聊也是走过场,另外有的人也是蛮逗的,基础题不是背书难道还要自己发明一套理论吗
点赞 回复
分享
发布于 2018-10-20 11:55
那个智力题是n的平方,n为1到31的整数
点赞 回复
分享
发布于 2018-10-20 12:04
我想知道,这些面试题和iOS有毛关系
点赞 回复
分享
发布于 2019-02-21 18:29
我估计如果有相关实习经历应该是有加分的,我这次面头条还好没被问OS。。。完全不会,转专业没学过。
点赞 回复
分享
发布于 2019-02-23 09:00
感觉基础答得一般般,也没有做深入得拓展。后面的14和15的智力题和算法题也一般般。回答的时候在一般答案没有出错的情况下,可以说出自己的见解,做深一步的分析,才能突出和其他人的优势的哦,希望对你有帮助。
点赞 回复
分享
发布于 2019-02-23 13:33

相关推荐

头像
03-26 14:48
已编辑
算法工程师
【岗位介绍】风险管理部是蚂蚁金服数字金融线的核心部门,负责花呗、借呗和 网商贷等产品的风控策略和算法模型体系。这里既有国内外TOP金融公司的资深从业者,也有互联网行业技术大咖。作为花呗信贷风险管理模型,我们致力于运用最前沿的算法技术,基于蚂蚁、阿里的海量数据,打造信贷风控的智能引擎,服务花呗信贷全流程。一流团队:国内外顶尖名校高材生,华尔街海归博士,科研达人,大型比赛冠军,应有尽有。直接面对真实应用场景,解决数字金融行业技术难题,师兄师姐带你飞!最新技术:机器学习、深度学习、数据挖掘、图计算、大模型、知识图谱、可解释学习等,放飞你的想象,一切皆有可能!【岗位要求】1.计算机、数学、统计、运筹学、金融、经济学或相关专业,硕士及以上学历优先。2.良好的编程功底,至少熟练使用C/C++、JAVA、Python、R等主流编程语言中的一门。3.熟悉机器学习、数据挖掘、统计学、运筹学中至少一个方向的主流算法及原理。4.较强的学习能力和逻辑性,良好的建模思维,对前沿技术有热情。5.具备以下一个或多个经验的优先:  -参加各项比赛,包括但不限于ACM-ICPC、Kaggle、天池大赛瓶奖   -在NIPS、ICML、KDD、AAAI、IJCAI等顶会上发表过论文   -参与过知名开源项目,或参与过大型机器学习、数据挖掘项目   -能够在Tensorflow、PyTorch、Spark等至少一种主流框架上开发算法。联系人:**********
投递蚂蚁集团等公司10个岗位
点赞 评论 收藏
转发
4 62 评论
分享
牛客网
牛客企业服务