阿里腾讯头条美团等iOS面试总结

640?wx_fmt=gif

640?wx_fmt=jpeg

Linux编程 点击右侧关注,免费入门到精通! 640?wx_fmt=jpeg


作者丨Tamp__

https://www.jianshu.com/p/a992b5f697ca


640?wx_fmt=gif

前言


最近春招一直在紧张的面试中,现在已经拿了头条offer,所以也没那么紧张了。决定把面试题拿出来给大家分享一下,欢迎大家来一起探讨。现在先简单的分享一下面试题,后续再谈谈面试经验,此文章后面会继续更新。


640?wx_fmt=gif美团一面


记不太清了23333


主要问项目的一些技术点


如何让一个label靠左,一个label靠右,然后右边的label能够完全显示


算法奇数排在前面,偶数排在后面


智力题,一个骑手送餐,ABCD商店,送给abcd四个人


kvo的实现原理


消息调用的过程


get和post的区别


http有哪些部分


tcp和udp的区别


七层模型


总结:美团是视频面,要求手写代码。主要还是问iOS方面的经验吧,算法题很简单也很常见,感觉春招面试算法题基本都是那些常见的,从我这份面试题中也可以看出,很多重复的。那道智力题想清除了也不算难。其它就是一些必备的iOS基础和计网基础吧。


640?wx_fmt=gif美团二面


讲一讲响应链


如何通过一个view查找它所在的viewController


如何扩大view的响应范围


微信分享大图如何实现,从进程的角度


进程间的通信方式,并举例


两个进程分别指向同一个地址空间并初始化一个值,分别输出是什么


算法,判断一个字符串是否所有的大写字母都在小写字母前面


修改podfile文件后,怎么用git diff显示出修改后版本和当前版本的不同,让我来设计


程序执行的过程


如果想要删除自己的一段代码,如何删除(在程序执行的过程中删除)


用过脚本编程吗


了解前后端吗


各科成绩,成绩排名


总结:这是我表现得最差的一轮面试吧,美团是我春招面的第一家公司,但是说实话当时准备得还不是很充分,也可以说没有面试经验吧,很多面试官问的问题我都没有get到面试官的点,不过这一面对广度深度都有要求,我面得有点懵逼,以为是一面表现得好二面故意压力面,结果并不是,猝。


640?wx_fmt=gif阿里一面


先介绍了项目,然后问了一些项目中的问题,然后开始问基础


属性的关键字


浅拷贝和深拷贝的区别


Block的循环引用、如何解决、原理


三种Block


Block和delegate的比较


kvo的实现原理


Autorelease pool的实现原理


消息转发机制


线程死锁的四个条件


进程和线程的区别


持久化


还问了数据库的知识我当时说我全忘了就没问了


中途还讨论了massonery的约束应该写在哪里,我说应该写在layoutSubViews,他说会调用多次,然后争论了一会儿


总结:阿里一面算是一次中规中矩的一场面试吧,从介绍项目开始,然后由浅入深,主要考察iOS基础,面试官说我表现得不错,这次面试的时候我还在搜狐实习。


640?wx_fmt=gif阿里二面


介绍项目


性能优化


YYModel和AF源码


如何自己设计json转model


架构


迷之算法题


640?wx_fmt=jpeg


总结:阿里的面试效率是真的不提了,二面和一面间隔时间可能相差了一个月吧,我已经从北京回到了学校开始上课了,而且这次面试感觉有点奇怪,最后那道迷之算法题我们也有讨论,实在没搞懂计算两点间的距离的算法还能怎样优化,面试结束后我问了面试官最优解是怎样的,面试官告诉我没有最优,只有更优


640?wx_fmt=gif阿里三面


一个安卓的面试官。。。。。


主要问了项目的一些东西 和给一些场景问我如何实现


自我介绍 介绍一些项目难点


主线程是相对于什么而言的


一张图片的内存占用大小是由什么决定的


索引的作用


索引的优缺点


在数组中找最小的k个数


淘宝下拉加载更多如何优化


淘宝页面发送HTTP请求的过程


介绍一下MVVM


知道哪些设计模式


总结:三面面试官主要就聊了一些具体场景问题和一些基础,基础我觉得没太大问题。面试过程中我讲到一些东西发现面试官听不懂,才知道面试官是做安卓的,问一些问题其实有点让我无语,但是总的来说还是回答过来了,感觉也没有太大问题,但是后面还是被挂了,很无奈。


640?wx_fmt=gif头条一面


MVC的一些缺点


讲一讲其它架构


你知道哪些编码方式


算法字符串翻转


HTTPS


多线程的方式和它们的区别


队列和线程的关系


一道线程安全的题


有哪些锁


属性的关键字


assign可以用于OC对象吗


copy和strong的区别


weak如何实现自动赋nil


为什么不可变对象要用copy


assing可以使用在对象中吗


640?wx_fmt=gif头条二面


Pod update和pod install的区别


layoutIfNeeded和setNeedsLayout的区别


抓包工具抓取HTTPS的原理


isEquel和hash的关系


SD的源码


bitmap的结构


可变数组的实现原理


如何hook一个对象的方法,而不影响其它对象


如何避免if else


自旋锁和互斥锁的区别


640?wx_fmt=gif头条三面


介绍项目,主要介绍自己强项一点的地方


数组cop后里面的元素会复制一份新的吗


数组的浅拷贝与深拷贝


TCP为什么是三次握手和四次挥手


基本就是走走形式了,主要就是问了一些个人方面的东西。。。。。


头条总结:头条一直都是视频面,而且是一条龙服务。总体来说感觉不错,反正主要就是需要基础足够扎实,不过之前听说的会手撕算法我倒是运气好没有碰到,就一面写了一道算法题。三面面试官等了一会儿没有来,约到了第二天(毕竟大佬都比较忙)。


640?wx_fmt=gif腾讯一面


介绍项目的网络层


为什么要使用HTTP???为什么不直接用TCP


如何保证HTTP传输到达


HTTP头部有哪些内容


讲一讲拥塞控制


MVVM如何实现绑定


block和通知的区别,分别适用什么场景


算法。连续问了好几个,都是数组,层层递进的,但是我忘了,只记得最后是找出数组中重复的数字


进程和线程的区别


程序在运行时操作系统除了分配内存空间还有什么


进程间通信的方式


如何检测应用是否卡顿


好像没多少问题了,记不太清,然后他说完了,我感觉好快,以为要挂了,就强行讲了些runloop和性能优化的东西,然后他说好了,你和下一轮面试官再说吧


总结:k神前一天晚上帮我推的简历,第二天就接到电话了,效率还是比较高。打电话的时候我正在上课,面试官上来就要开始面试,我约到了晚上。这次面试其实表现得也不够好,前两个问题有点没get到面试官想问的点,问得很快。最后面试官突然说他问完了,我很虚,以为自己是挂了,然后给面试官说面试是不是太快了,iOS方面的东西好像都没怎么问。


面试官说如果你觉得你还有什么没用展现出来的,你就说说吧,然后我强行讲了一些性能优化方面的东西,因为这是我唯一准备的了解得稍微有点深的东西了。最后还没讲完,面试官直接告诉我让我和下一轮面试官再讲。我不知道如果后面我不强行讲的话,这一面会不会挂,所以很多事情还是需要我们自己努力去争取机会的。


640?wx_fmt=gif腾讯二面


OC中对象的结构


多态


Ping是什么协议


知道MTU吗


TCP头部多长,IP呢


线程同步的方式


iOS中有哪些锁


MVC和MVVM的区别


了解哪些设计模式


存一个通讯录,包括增删改查,用什么数据结构


看过哪些源码,讲讲思路


两个链表找第一个相同结点


字符串旋转


找链表的倒数第k个结点


把一个链表比某个值大的放在左边,比它小的放在右边


二叉树的中序遍历,非递归


总结:主要还是基础,腾讯是真的喜欢问计网和数据结构。这一轮面试我可以说是裸面了,那几天都在放飞自我,因为那时候已经拿了头条offer,也没有其它想法了,就想着随便面面吧,不过也无所谓。还好面试的时候还能进入状态,虽然面得不是特别好,不过基本上还是能答出来,最后的二叉树遍历,由于平常都想的是递归,一直没怎么注意非递归的实现,我卡了一会儿,还好最后还是想出来了(请不要嘲笑我)。


中间有个小插曲,就是过了几天我在公众号上面查发现我的状态已经挂了,都已经“心灰意冷”了,结果昨天收到一个广东深圳的电话,当时心里就挺激动的,接通后果然是腾讯的HR,意外惊喜。


640?wx_fmt=gif百度一面


我也不知道为啥我的简历会被一个做底层开发的部门拿去,然后面试很尴尬,全是计算机基础


大概回忆一下


进程和线程的区别


一个进程有哪些区


拥塞控制


进程间通信的方式


七层模型


TCP和UDP的区别


传输层和网络层分别是做什么的


UDP可以实现一对多??


算法 求数组的最长子数组


Http2.0如1.x的区别


总结:开始是把我推给的一个偏网络层做C++的部门,所以面试基本都是计算机基础,也讲了一些iOS的东西,但是我猜面试官可能也不是做iOS的。本来打算问我C++,我果断说自己没怎么写过C++,如果问C++我肯定hold不住。


640?wx_fmt=gif百度二面


发送一个HTTP请求的过程


TCP是如何保证可靠的


内核态和用户态的区别


在一个10G的数据里面找出最大的100个数


讲一下我最满意的一个项目


然后讲了一下网络造成卡顿的原因


总结:这一面是把我转到做APM的那个组后面的,感觉面试官时间很急,面得有些突兀,不过没有太大的问题,所以基本就让我过了吧。


640?wx_fmt=gif百度三面


全是问得iOS方面的问题,问得真的很细,需要基础很扎实,对各个机制真的足够理解,不然确实有点难回答。我只列举一下大概方向,这些东西也是iOS开发必须掌握的基础吧


属性的关键字方面的


内存管理方面的


多线程


各种队列


线程锁


MVVM


总结:本来前一面面完都说我技术面已经通过了,我还很诧异,结果发现是搞错了,所以补了这一面,就是考察一下我iOS方面的能力到底是否有水分吧。问得很细,确实需要基础足够扎实才行。


640?wx_fmt=gif

写在最后


以上的面试题肯定是不完整的,只能根据我的印象记录我能想起来的了,而且即时是一个看似简单的题,你如果没有真正弄明白它的原理的话,在面试过程中你也很有可能被问懵,所以一定要打好基础,要知其然并知其所以然,更多的总结后续再更新。。。。


 推荐↓↓↓ 

640?wx_fmt=png

?16个技术公众号】都在这里!

涵盖:程序员大咖、源码共读、程序员共读、数据结构与算法、黑客技术和网络安全、大数据科技、编程前端、Java、Python、Web编程开发、Android、iOS开发、Linux、数据库研发、幽默程序员等。

640?wx_fmt=png万水千山总是情,点个 “ 好看” 行不行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值