首页 > 字节iOS客户端面经(内含完整秋招面试经历)
头像
RedPage
发布于 2021-07-29 14:16
+ 关注

字节iOS客户端面经(内含完整秋招面试经历)

引言:
21届秋招过来人,现已成功上岸并入职字节,谨以此贴,记录我的秋招经历。
同时回馈牛客,喝水不忘挖井人,感谢牛客上各位朋友无私的分享,让我少走了很多弯路,得到了很多帮助。
还要感谢字节的面试官和HR,不断的给予我鼓励和肯定,让我一直坚持下来。

前倾提要

  1. 北邮本科+专硕,专业是通信工程+电子通信工程;
  2. 技能点:C++、自学过iOS开发;
  3. 投递的都是iOS移动客户端开发;

秋招字节面经:

我的秋招经历比较反复,整理了其中一部分面经放在这里,完整的面试记录链接我会贴在后面。

一面

  1. 自我介绍,是否了解swift语言(OC选手)?
  2. 问了UITableView使用时的感受?有什么优缺点?
  3. UI布局是用的代码还是什么?是否做过机型匹配相关的工作?
  4. 然后问了网络请求用的什么做的,我回答了session和AFN,然后顺势问了用过哪些第三方库。回答还用过SDwebimage。
  5. 顺着问了sdwebimage做了什么工作,和我们直接从网络上拉图片相比有什么不同?
  6. get和post的区别,还是幂等性和安全性的问题,这次针对的是安全性
  7. 问http有哪些头部字段?
  8. 问了keep alive,keep alive怎么工作?
  9. 有没有做过断点续传的相关工作?
  10. https的工作机制?
  11. notification的post与响应会在哪个线程?
  12. 然后具体问了,如果一个类被销毁了,然后给他发送通知还会响应吗?
  13. 然后开始C++大礼包,C++中的new与malloc有什么区别?
  14. C++虚函数工作原理
  15. 构造函数析构函数是否可以为虚函数
  16. 重载与重写?
  17. vector与list的区别,访问和插入的速度哪个快?为什么?
  18. memcopy个strcopy有什么区别?
  19. 算法题,数组中超过一半的数字。不能用map和set这种可以直接排血的数据结构。剑指原题。
    一面比较基础,但是当时C++没来得及复习,好在算法题秒了,应该是三天内通知过了约下一面。

二面

  1. 先评价之前的面试有哪些表现不足?
  2. tableview的优化有总结吗?在性能和内存上
  3. 内存复用,背后的数据结构,设计原则中一般会设计一个对象池,这个是怎么做?
  4. cell高度动态计算
  5. KVO的原理
  6. C++ 11 左右值引用。
  7. 引用和指针的区别?
  8. 如果一个类存在父类,基类的虚构函数要用virtual修饰为什么?
  9. 如果子类没有额外的成员变量,如果子类是个空实现,没有变量没有方***有问题吗?
  10. 声明为虚函数有什么变化?
  11. 虚表生成和地址引用发生在什么时期?
  12. OC里面怎么解决多态问题?
  13. 先问了多态的定义是什么?
  14. 分类为什么可以用来做多继承?怎么实现?
  15. 菱形继承问题怎么解决?什么是菱形继承?
  16. OC内存管理了解?引用计数的原理是什么?(OC有更高级的GC,但是iOS上只考虑引用计数)
  17. 引用计数为什么会导致循环引用?
  18. 一般怎么解决循环引用?
  19. weak怎么置nil?原理了解吗?
  20. 其他的高级内存管理,其他的GC了解吗
  21. JAVA的GC机制了解吗?
  22. 深浅拷贝?
  23. C++怎么做深拷贝?
  24. OC深拷贝
  25. 对于string 的copy和array的copy 是一样的吗?面试官的意思是,copy实际上调用的是copywithZone,所以不同子类复写的实现应该是不一样的。
  26. 限定NSArray的copy,那引用一个NSArray 和copy 一个NSArray的区别在哪?
  27. IOS怎么加载一个进程?
  28. iOS的虚拟内存了解吗?不了解的话说一下普通的虚拟内存。
  29. 缺页中断和页置换算法
  30. 用户态和内核态切换发生在什么时候?切换时机?

智力题

1、random7 求 random5
2、3L 5L 杯子 4L 水

算法题:

给定一个char数组,使用字符+次数的方式进行压缩,次数为1时只保留字符。 返回新的char数组
in:['a','a','b','b','c','c','c','d']
out:['a', '2', 'b', '2', 'c', '3', 'd']
问:如果某个字符超过10个怎么处理?

三面

自我介绍

  1. tableView和collectionView,如果有数据变更的时候,是这个数据源的reload还是有定向的更新?

  2. 开发的环境是linux的C++,c++的标准?

  3. 写了一段C++的代码,返回一个对象然后赋值,大概类似下面:

    class A 是一个类
    A GetTest()
    {
    A a;
    return a;
    }
    A s;
    s = GetTest();
    问,这个过程中调用了哪些函数?
  4. 操作系统的文件系统?

  5. 项目中多线程场景

  6. 对自己的评价?在这个软开的领域有什么擅长的地方?优势

  7. 算法题

    题目:S-expression解析和计算
    s-expressions, sexprs, sexps是一种数据表示方法,在lisp语言里发明并流行
    An s-expression is classically defined as
    an atom, or
    an expression of the form (x . y) where x and y are s-expressions.
    例如,使用s-expression来表达计算:
    (* 2 (+ 3 4))
    结果是14
    下面请写出代码来计算下面这种的s-expression的结果:
    atom: + - *  int 
    第一个label一定是计算操作符:+ - *
    后面一定是数字,或者expr,注意:数字可以是多个。
  8. 其他公司的offer情况?什么时候能来实习?

  9. 后面对自己的定位,想发展成为什么样的工程师?

  10. 觉得读研对自己的最大的帮助是?

  11. 反问,工作时间安排之类的

  12. 面试官补充问:喜欢什么样的工作的团队氛围和节奏?沟通上的倾向。

  13. 哪里人?

小结:

  综合整个秋招面试感受,字节的效率以及面试体验都是最好的,基本上三天就有反馈,会沟通下次面试的时间(时间都挺人性化的集中在10点和3点,没有反人类的12点面试)。
  客户端的面试确实不要求客户端基础,考察的重点是各种计算机基础,我虽然会一些iOS,入职时是完全当0基础对待的。然后其实我的面试表现都挺一般的,但是在面试过程中,面试官很耐心,全程都有引导,非常的和气,而且都很年轻,看起来和师兄师姐没什么两样,确实对于缓解面试压力起了很大的作用。
  并且HR也真的很nice,一直鼓励我多试一试。HR有一句话对我很关键:面试过程中的成长性也是考察的一个重要素质。这个当时挺戳中我的,所以我坚持每次面试后及时复盘,力争上次的错误下次不犯,守得云开见月明。

实习感受:

  20年11月左右秋招尘埃落地,21年三月上旬过来实习感受了一番。来之前我是非常忐忑的,入职当天起了个大早,然后待了小段时间后就没什么顾虑了。入职时会分配mentor,新人的任何问题,包括工作和生活,都可以询问mentor,mentor都很强的,完全不需要有心理压力,团队的氛围是很开放自由的。新人的checklist上甚至还会有和mentor完成约饭的item 🐶。然后mentor会根据你的技能点和你沟通,制定合适的学习和发展路线,并且定时review,一切诉求都可以沟通。
  福利方面,三餐全包,每日有下午茶,外加零食不限量,反正不管饿不饿都在吃。此外还有顶配Mac、丰富的活动日,免费健身房以及住房补贴,各种福利拉满。当时还没入职就已经收到校招礼盒、春节礼盒一大堆福利。

最后:

  希望我的经历对大家有那么些许参考的价值,也欢迎大家加入字节一起fighting。现在应该正是字节提前批最后的时候,多一次尝试的机会不要害怕,字节的效率是非常可靠的。需要内推的同学可以私信我内推码。
附上我的面试经历链接

更多模拟面试

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐