迫于内推压力,我还是回来了这个我十分感激的论坛TAT,来补一个iOS今年秋招的面经。
首先,写在前面,我秋招是allin了字节的并且是无iOS基础的,给的offer我也算满意,现在已经入职了,现在在字节深圳,有问题都可以私戳咨询我呀。包括简历修改,面试辅导,岗位推荐,保证知无不言言无不尽!
一面,二面(秋招的时候两面是一起的,不知道春招有没有什么变化)
一面是一个年轻小哥,性子有一些急,问的问题也比较基础
1.描述一下网络的三次握手四次挥手,为什么要这样做?(这个比较简单大家应该都会)
2.网络的OSI七层模型,并对应说说除了物理层外的各层功能,并说说各层中有什么协议(我也不记得会话层的功能了,不过小哥并没有卡我^^)
3.HTTPS和HTTP之间的区别,为什么要使用HTTPS,HTTPS的实现原理(这三个是层层递进的问的,所以不要只知道HTTPS比较安全,使用了什么什么非对称加密和对称加密算法...最好是整个流程都去了解一下,如何获取公钥,数字证书有什么用,虽然工作中不是很重要,但是面试大家都是背八股文长大的,那不是更得知道的多才能显得你与众不同吗)
4.ARP协议如何工作(这个也比较简单,但是后面会扩展问一些TCP,UDP的问题),会问某些场景是否使用TCP或者UDP,后面还转进了http1.0和1.1的长连接,感觉这个也是一个考点,记得不是很深刻了
5.进程和线程的区别,为什么要有线程,线程拥有什么独立的资源,多线程如何安全的访问进程中的资源,讲一下各种锁(这个也是八股文,操作系统必问,懂得都懂)
6.操作系统中的虚拟内存是什么,讲一讲页面置换算法,是否有了解过三级缓存机制(也是递进的问的!三级缓存机制是APP开发常用的也会考查)
7.最后有一道算法题,leetcode 59(一道中等题,我没做出来。。。。。。。。。。。。。。。但是过了,本来以为算法是我强项的.........)
二面
二面应该是交叉面,问的主要是JAVA相关的知识
1.单例模式,然后问各种锁的作用。(其实面试前我都不知道这是个啥玩意,但是我背了一份,然后默写了一遍。现在工作了,知道这个还真的用的挺多的..还好没问我工厂模式)
2.线程池(这个也是背的,面试官看我背的熟就懒得管我了)
3.问了一些JAVA的容器,链表数组hashMap,这些需要回答到底层,实现的逻辑,为什么这么实现
4.JAVA的GC机制(又是八股文,十分善良了)讲了讲几个堆内存分配区,两种确定对象是否为垃圾的算法(可达性算法+引用计数),四种类型引用(其实只讲了强软弱三种,工作后再也没用过JAVA但是OC中也有相关的内容)
5.讲一讲为什么JAVA中的每一个数据结构都是一个类,还有什么常量池相关的。(好背好背)
6.堆和栈的区别(这个很多新手都会不太了解,包括很多很多在看我面经的人,希望你们没有被我说中)
7.写个快排(我那天真的很饿差点没写出来...........)
三面
一般是你部门leader给你面试,根据我的小样本而言,那些八股文的问题不怎么会问了。一开始针对我的语言问了一些偏底层的问题,后面直接三道算法题QAQ
1.JAVA的异常处理机制
我也不知道我回答的在不在点子上,我就说了一下有两种JAVA的异常,包括error和exception。try,catch,finally。然后finally的东西一定会执行,无论try中是否执行return都会走到finally中。如果finally中有return则会覆盖之前的return的结果。说的比较偏代码实际应用方向,不是很涉猎底层,不过看的出来还比较满意,可能是看上去比较有工程经验吧。
2.JAVA的容器,直接让我实现一个HashMap
这个本来算是一个算法题的,我当时想了想代码量有点大,我就说能不能我口述,老板就说ok。就讲了讲一些比较底层的东西,比如初始容量的设置,为什么要是16。在put的时候的扩容,如果已经存在某key则替换,不存在则接入碰撞后的链表底部,如果过长超过一个threshold就要转为红黑树(字节真的不会问红黑树!我老板还笑了笑让我讲下红黑树,我就说以前看过,只知道是个二叉平衡树通过左旋右旋balabala保持平衡,当然我肯定不会红黑树Orz)
3.来了个leetcode中等难度的二分,让找一个排序数组的第一个负数,这个也比较简单,不过二分在我看来真的很考验一个人的基础和逻辑。
4.让找数组中第一个缺失的正数,这个我好像做过原题,就是把数组的索引和value做一个对应。具体可以看leetcode 41,不过我说时间复杂性的时候说错了,我说成了On2.....后来面试官问我还能提升吗,我说直接快排然后遍历一下...也才ONlogN,挺尴尬的,不过也没特别卡我。
5.六十四匹马八个跑道的智商题,大家应该都做过了
6.可能是前面的算法题做的比较快,他还问了我一个什么如何修建厕所的题目..这个可能遇到的人比较少了,就是分析一下一层楼男厕所女厕所应该如何分布,每个厕所应该多大...比较发散,看上去像面试官临时想出来的。
面试的问题大部分都是八股文和算法,大部分的印象也不是那么深刻了。就我工作而言,数据库对于iOS开发的作用不是很大,可以选择性放小复习(预习)比重在数据库上。最后也没有HR面,应届生只要面试表现正常可能都没HR面吧。
来字节真的挺快乐的,每天都有成长,刚来字节就能独立管理一个库,经验十分难得。虽然是大家都看不起的iOS开发,比不上服务端的大佬们,但是胜在好进大厂,至少现在而言还没后悔,五年十年后的事情再说吧^^。另外如果担心iOS零基础工作会有困难的同学也可以私戳我,我来分享我的经验,如果能在面试的时候有iOS经验,那进厂的机会也将大大提高,一个月即可速成开发。最后,祝大家春招顺利一起当字节同学!
全部评论
(12) 回帖