字节跳动iOS客户端日常实习一、二、三面凉经

作者:Mr.U 链接:https://www.nowcoder.com/discuss/398257 来源:牛客网

准确来说,这是一篇收到了口头offer的凉经,至于是否被鸽,笔者无从查知,本着分享高尚的精神分享给平台的大家,各位牛友轻喷。

一.时间安排Time Line

  • 3月23日接到面试通知

  • 3月27日11:00 一面,通过;

  • 3月30日18:00 二面,通过;

  • 4月01日11:00 三面,通过;

  • 4月01日16:00 HR面,通过;

  • 4月01日18:00 通知无法发offer

二.面试

字节一面(视频)内容:

先说总结,面试时长1小时,内容比较基础,体验较为活跃轻松。

字节面试官相当nice,头两个问题没答上来非常耐心引导,提问单刀直入,能给到题眼,回答起来很轻松。问题难度偏简单,基础。

1、 常规的自我介绍,说了一句项目经验还行;

2、 介绍一下简历中的一个项目(本来准备了word文档展示,奈何共享屏幕不可用,口头说的烂七八糟,不过面试官心态很好,直接开始提问,这里我就觉得这次面试体验会非常好);

3、 面向对象的三个要素(封装继承多态,上来就给我干懵了,没答上来…);

4、 多态?

5、 Java,python,OC运行效率孰高?(OC,直接生成机器码);

6、 Property,其中copy如何?

7、 Property(nonatomatic, copy) NSMutableArray有什么问题(addObject会崩溃);

8、 Copy和MutableCopy的区别(上面这个问题没答上来,回答了这个跳转回去,立刻明白了啥意思,引导顺滑,好感max);

9、 解释下类别,原理(特性)?

10、解释下封装,重载;(这里差点把重载和重写混淆,不过面试官适时安慰让我不紧张,瞬间好感max);

11、 OC存在多重继承吗?(必然不存在);

12、了解表视图吗,解释一下复用原理(复用标识符);

13、说明一下表视图的滑动卡顿的优化方法(内容和高度计算两方面);

14、viewDidLoad和viewDidAppear的调用时机(一次和多次的区别);

15、页面间的传值方式有哪些(公有属性,公有方法和协议,block传值,通知,extern全局变量传值,NSUserDefault简单数据存储传值);

16、通知和delegate的区别?

17、 通知的发送和接收是否在同一线程?(应该是的,回答的时候面试官尝试纠正我,真好心,然而我菜……解释不通干脆说不是);

18、HTTP和HTTPS区别?(网络基础很差,答得不是很好)

19、OC中多线程一般有几个方案?(NSThread, GCD, NSOperation四个);

20、上述技术各有什么特点,平常哪一项用的比较多?(GCD);

21、了解NSURLConnection和Session吗?(一般直接使用AFNetworking…);

22、说一下NSURLSession具体的实现原理(大概说了下四 个步骤);

23、问了一下http的头部的几个码。(忘光了…);

24、编程题:实现一个二叉树的倒置。

面试到这里就结束了,非常轻松,个人感觉有一些意犹未尽的感觉,可能是面试内容比较基础,毕竟GCD的底层原理和内存方面的内容并没有涉及到多少(笔者在这方面下的功夫比较深)。然后就让反问,我问了如下问题;

1、 属于什么业务条线?(答曰属于日常实习,具体分派需要到HR询问);

2、 一面结果什么时候通知?(大概下星期,其实蛮快);

3、 iOS以后的发展方向?(flutter方向,移动端的大团结);

4、 整个面试发展顺利的话大概什么流程?(一二技术面,三轮HR面,可能会有加面);

5、 研究生的课程例如大数据等对于移动开发有何帮助?(没有)

6、 结束。

面试结束后大概2个小时,HR就打电话通知一面通过,因为是周五就约了下周一的二面时间。

字节二面(视频)内容:

面试时间:3月30日,下午18: 00。

先说总结,面试提问时长36分钟,内容偏向应用层面,在内存和多线程方面有深入提问,提到项目难点,编程相关为一道思路题+一道简单算法

面试前一天,被告知原定14点的时间改到18点,为了尽快面试就选定了这个时间,不过也考虑到饭点和下班时间可能会对面试官的情绪产生一定影响。事实上的确,整个面试的时间较短,面试结束时一度以为凉透,不过面试官也向我解释了正常面试时间为半小时到40分钟,总体感觉面试官属于能力技术level都很高的资深技术员或者leader,面试过程中一直在出题,应该是有一个共享题库直接选题提问。

1、 常规的自我介绍,问了项目经验;

2、 问了来实习的时间;

3、 老虎吃羊问题。(博弈论,老虎要吃羊,假设所有老虎是理智的,即首先为了生存,其次为了饱腹,老虎吃了羊后会变成羊,同样会被其他老虎吃掉。现在,N只老虎和1只羊,请问N为多少时,老虎们会吃羊。动态规划问题,奇数吃,偶数不吃。);

4、 青蛙跳格子,斐波拉契数列;(同时问到了时间复杂度,较简单);

5、 熟悉使用什么框架?(回答AFN,SDWebImage和百度地图SDK,让我选择一种技术解释,本来选择的是AFN,不过在一面的时候说过,让我重新换一个,选择了SDW,解释了大概原理);

6、 如果让你自己实现SDWebImage的二级存储机制,你如果实现?(这里对底层代码知之甚少,思考到应该和缓存有关,印象中与图片和缓存有关的就是UIImage的调用方法,就提到了UIImage的名称和路径的两个调用方式,不知正确与否);

7、 @autorelease{ NSString s;}和NSString s;有什么区别?(自动释放池中的是临时变量,会被释放,生命周期更短);

8、 说一下你对autorelease的理解。(内存管理方式相关内容);

9、 说一下对于http的理解?(简单说了概念);

10、http的返回状态码有了解吗?(说到了200,400,500,问道了300,不知……);

11、 为什么说http是无状态的?(cookie和session相关,没回答上来,本次面试最大的败笔。);

12、说一下项目中遇到的最困难的地方?(说到了消息推送和类似微信小红点消息提示的功能绑定实现,用到了观察者模式,进行数据改变的更新);

13、为什么不用原生的APNS技术实现呢?(需要及时上线);

14、了解GCD吗?(大致说了基本概念和几种常见的API);

15、 说一下dispatch_group_t和dispatch_barrier_sync的区别吗?(组调度是等待一组操作完成之后再进行之后的操作,阻隔是并发队列中的并发阻隔点);

16、了解NSOperation吗?(大概说了概念和三大特性);

17、了解NSOperationQueue吗?(用的比较少,不了解);

面试结束,本次的问题比较少,而且面试官的问法比较跳跃,感觉上是临时出题,而且以询问了解程度为主,不好找准题眼,所以笔者在应答和表述上都还有很大的不足,不过能够答对的问题基本答对,没回答上来的问题也有许多。总体来讲问道的内存管理,多线程编程相关较多,相较于一面进阶的内容明显加深。难度中等。

大概面试后1个小时,收到Hr的三面通知,约在后天的11点(又是饭点……),同时被告知技术面的轮次大概2-4轮。所以本次通过二面悲喜参半,一方面是能力并未到达完全的认可,因为确实自身在网络这块基础薄弱;另一方面是能够给予下一次的面试机会,基本还是认可了基础和项目能力。***尚未成功,同志仍须努力!

字节三面(视频)内容:

面试时间:4月1日,下午11: 00。

面试类别:iOS客户端实习

先说总结,面试提问时长50分钟,问的问题比较散,主要围绕编程和合作能力一块。

面试官稍迟两分钟进入面试,看样子很年轻,是沉稳的程序员做派。

先说一写题外话,这次面试之后拿到了头条极速版的口头offer,不过正如很多经验都提到,口头offer并不可信,十有***是假,拿到书面offer才算稳,笔者也被一番操作秀没了口头保障,但是本着分享经验,造福社区的想法,还是把面经分享给大家。同时给大家提醒,没到最后关头,没有松懈,祝大家求职路上一路顺畅平安~

下面是面试内容:

1、 算法题:求只有三项元素的数组中的顺序排列,时间复杂度要求O(n);

2、 说一下你对OC程序编译和连接方面的理解?

3、 说一下内存管理相关的操作?

4、 说一下响应链的原理?

5、 追问:hitTest有尝试过重写吗?(没有);

6、 http, session和cookie有了解过吗;

7、 线程和队列的关系?

8、 CALayer和UIView了解吗?

9、 你对同事间的矛盾怎么看?

10、有技术博客可以分享与一下吗?

11、 给面试官分享了一个本科时期的比赛视频。

总共三轮,结束。

下午4点左右先收到HR个人电话的口头offer,一开始很惊喜,甚至在社交平台上发表了感言。晚饭时间收到offer被撤销,原因是不接受非在校生申请实习岗位,我寻思其他公司也没有对本人的非应届身份有什么疑问,总之,头条是拒绝了我。(港校留学准留学生) 在电话中我还表达了强烈的入职意愿,表示拿到正式offer立马办手续,结果,可悲。 总体,头条的高效和面试的良好体验,让我感受颇深,如果没有后面的魔鬼操作,我对头条必然是愈加喜欢。

各位看官也就将就看看,牛友们各个比我牛逼,在求职路上一定披荆斩棘,无往不利,最后的实习过程就告一段落,心有些累,还是回家老实等开学把。大家一定坚持不懈,成功就在彼岸!

最后更新于