iOS实习面经(字节美团阿里蘑菇街)-创新互联
因为时间很久了,记不住太多,只能把记得的写一写总的来说,美团的面试体验最好,字节的速度最快。
按照时间顺序,蘑菇街一面,阿里一面,字节一面二面,美团一二面,字节三面。
蘑菇街
一面
是一个小姐姐面的
- 学iOS多久了,为什么学iOS,怎么学的
- 进程和线程的区别
- weak怎么用,delegate为什么用weak
- block与weak,__block怎么用、原理
- arc原理,weak的实现原理
- 用过category吗,介绍一下,当时这部分还不太懂,我说不能添加property,她说为什么不能添加,我强行解释了一波,她说其实是可以的,但是有些问题,可以回去查一下
- 做个题,字符串的全排列,结果没写完,时间不够了(我太菜了
- 看到我简历上提到了网络相关的,问我路由器和交换机的区别,我拿了一堆专业名词解释了一波,结果被她打断,其实她想听的是家用什么情况用哪个(我呸!!
- 又问,用过抓包工具charles吗,我说没,只用过wireshark,她说,wireshark抓到https的包会看不到内容对吧,但是charles可以,为什么呢,如果要是实在没用过可以换个问题,我想了一下,确实没用过,但是之前看过中间人攻击的原理,就实话实说,猜测应该是XXX原理
面试完之后看新闻,发现就面试前,github被中间人攻击了,我才应该是面试官看到这个新闻了然后就问我这个问题了
阿里
二面凉,今天刚发感谢信,阿里的速度出奇的慢,投简历之前还以为大公司都会很快,没想到阿里拖的时间真的非常久,一个半月多(可能因为我菜吧
一面聊的还可以,都比较基础
- 自我介绍
- 算法题,连续子数组的和,有正有负,典型的dp,但我没做出来,我傻了,只做了全正的情况
- 两个栈实现队列,容量大小,复杂度,怎么优化
- Block的实现,变量的截获等等
- ARC是什么,都做了什么
- 一些网络基础问题,浏览器输入url后回车的流程
- 接上一个,MRC有weak吗,用什么代替,weak是怎么实现的
- iOS是怎么学的
- Bounds和frame的区别
大概就记得这些了
二面真的就是虐我
- 自我介绍
- 问我为什么笔试的时候用java不用oc,平常都不用oc怎么能熟练(然后开始批评我
- Java和oc的垃圾回收机制
- 做个题 leetcode27二叉树的镜像
- 红黑树的实现(这个是真不会
- 职业规划(我还没职业呢我怎么规划
然后说没其他问题了,这时候才二十分钟多一点,心里就已经知道要凉了
然后今天
字节
找了一个做iOS的学长内推,两点发过去简历,五点半就打电话约面试了,每次面试都是离面试结束应该也就三四个小时就打电话约下一面了
一面
- 自我介绍,block的实现、变量截获,有个forwarding指针是干什么的
- Category能添加什么,原理,为什么能添加property不能添加ivar
- 用gcd怎么实现线程安全(barrier)
- Oc中的方法调用
- 一些网络问题,很基础,tcpudp区别,https原理,http2.0
- 内存对齐的原因
- 算法题O(1)的复杂度删除链表节点,剑指上有,做过又忘了,以为要遍历,怎么想也做不到O(1),结果我理解错了,会给节点地址
最后问小哥我是不是凉了,他说我没凉,入职后还没跟小哥面基
二面
二面是一个非常严肃的老哥,面得我真的是心态爆炸,问啥啥不会,最后竟然还过了,记住的问题不多,可能是不想回忆痛苦
- 上来就问我啥语言比较擅长,我说java……老哥愣住了,问我c++呢,我说学过,忘的差不多了,他说,c呢,我说还凑合吧,然后就开始虐我
- strlen()和sizeof()作用于一个字符串时的区别
- 还有一些其他的c的问题,记不住了
- 进程线程区别
…………记不住了
最后又问老哥,我是不是凉了,老哥终于笑了,说 你要对自己有信心。
面试完在家吃午饭,难受得我都没吃好,下午面美团的时候hr又打电话约三面
三面
三面就是我现在的leader,人很好,也很年轻,抓问题一针见血
问了不少问题,基本都忘了
java的gc,cookie和session的区别等等
老哥看我看的透透的,不愧是leader,说我都是停留在用的层面上,没有去究其原理,动手能力应该还可以,但是理论需要加强(操作系统等等),跟我说看面经背答案啥的没用,还是得去系统的学,去动手
美团
面经是我录了音然后整理出来的,问题应该都没有漏掉
一面
- property修饰符以及作用
- 接1,atomic和nonatomic的锁原理,目的,举一个用atomic的例子
- 接1,weak的实现原理,weak表的key-value分别是什么
- 接1,copy的使用场景,使用的条件,如果没有重写copyWithZone会怎样
- 消息发送的机制,方法调用的过程
- kvc的使用,kvo的使用、原理
- Category能不能添加属性,为什么。添加属性和method实现的原理
- 接7,ios8编译的app能在ios10(或其他)上运行,如果NSObject修改了,为什么还能正常运行。
- Xcode中按下运行按钮到App打开,整个的过程,编译过程每一步的产物
- 浏览器输入URL按下回车后的整个过程
- DNS哪一层的协议,用TCP还是UDP
- 接11,TCP和UDP的区别
- 三次握手的过程,过程中协商了什么;四次挥手过程,为什么握手三次挥手四次
- 为什么要有虚拟内存,为什么分段和分页
- 进程线程的区别,进程之间线程之间内存隔离吗
- 接15,进程间通信的方式,使用过哪些,socket编程用过吗
- 学习iOS过程中的难点,怎么学的
- 点击事件的响应过程了解吗
- 写个题,遍历子view,奇数偶数层分别染色,分别用递归迭代,我递归用了一个参数来标识奇数偶数层,问能不能优化掉
- 思维题,十个物品,九个100g,一个90g,只有一个天平,用最少次数找出这一筐;再加一个条件,如果可以使用任意质量的砝码,如何优化。
- 你有什么问题
十几分钟后二面
二面
- OC比起C增加了什么,有哪些东西依赖runtime或者是由runtime实现的
- 接1,提醒我还有面向对象的这部分,面向对象的三个特性,那么是怎么实现的怎么构建起来的,我回答了对象类对象metaclass的相对的结构
- 接2,对象的ivar的存在哪,是根据什么生成的,类对象有ivar吗
- 看过哪些OC的源码,直接看的源码还是对照一些文章,都在哪找这些文章,看过什么OC的书,语法是怎么学的,接触OC的时间
- iOS和Android的App不能通用,分析一下为什么
- 了解过什么跨平台的技术
- 做个题,F()有0.3的概率返回0,0.7的概率返回1,设计一个函数G(),只能使用F(),使G()等概率返回0和1
- 接7,只能使用F()和G()设计一个函数,等概率返回[0, 1000]的整数
- 进程的内存空间,分别存什么
- 接9,函数调用的时候为什么要把寄存器的值压入栈,都有哪些要压进去
- 进程和线程,区别,分别有什么资源,进程切换的过程
- 这学期课多吗,都有啥,实习的话什么时候可以来,考研吗,为什么
- 闲聊~~
推荐????:
如果你想一起进阶,不妨添加一下交流群
1012951431
面试题资料或者相关学习资料都在群文件中 进群即可下载!
网页题目:iOS实习面经(字节美团阿里蘑菇街)-创新互联
分享路径:http://scyanting.com/article/dpjjdc.html