iOS客户端面经总结(回馈牛客)HR面试结束等结果ing
iOS面试总结,因为之前集中面试,具体什么公司问了什么分不清了,我就按照知识分类写了~
1. 计算机网络
- OSI五层或7层数据模型,每一层的功能和运行的协议
- TCP、UDP和IP协议的内容和区别,细节包括3次握手、4次挥手的过程
- TCP流量控制等机制
- 输入一个URL到显示页面的全过程,经历过哪些阶段用到哪些技术
2. 操作系统
- 进程和线程之间的区别
- 进程间的通信,线程间的通信
- 进程拥有哪些资源,线程拥有哪些资源,哪些是共享的,哪些是独有的
- 操作系统中堆和栈的区别
- 进程间的同步和互斥,进程的状态
- 各种锁:自旋锁和互斥锁等,各自的特点,功能和使用场景
- 死锁的解决和产生
- 段页式内存管理简单介绍下,各自的优缺点
3. 数据结构
- 各种排序算法的原理、时间复杂度、稳定性
- 数组、set、map、链表、栈、队列等一系列常用数据结构的特点和使用场景
- 然后就是各种面试手撕代码,牛客面试的编译器。。。这个部分大家加油
- 反转链表
- 查找二叉树的两个节点的父节点
- 二叉树的各种遍历:先序、中序、后序、层序
- 旋转数组,查找数组中数据(预设场景可能有所不同)
- 别的真记不住了,就感觉数组、链表、数这些考频较高
算法题这里,由于也是我最愁的,所以多说一句,面试代码还是考察的比较基础,不会那么变态难。。。根据我的面试经验来看,只要真的掌握了常用数据结构的常用操作,面试的手撕代码不会很困难。面试官都很nice~主要是考察能力,不是故意刁难想把我们难哭的~加油同志们!
4. iOS方向的面试问题
- 循环引用的问题,什么场景下会有循环引用的问题(delegate和block使用不当)
- 单个UIViewController的生命周期
- 深浅拷贝主要的区别和使用场景
- ARC的内存管理主要有哪些特质,知道的全说出来
- iOS多线程主要用过哪些,后面会根据回答针对性提问
- 事件的产生和传递过程,响应者链知道吗
- AutoreleasePool知道什么
- @property的修饰符有哪些,分别介绍下功能和使用场景
- iOS中用过或见过哪些数据模式
- frame和bounds的区别
- CALayer和UIView的区别
- KVC的底层实现
- load函数和initialize函数的区别,使用场景
- Runtime和Runloop,这两个都比较底层和难,问的深度和回答的深度有关。
5. 总结
我这脑子,能想起来的就这么多了。。。只是给出大家一个提纲,希望可以把自己的经验分享给有机会看到这个帖子的每一位同伴,希望大家最后都能有一个让自己满意的结果。最后,希望大家不要局限于这个帖子中提到的知识点,知识的累积和技术的增长其实都不是一个短暂的过程,我们都是在不断学习的过程中不断进步,打好每一步的基础,才会在面试中有好的发挥~大家冲啊!!!!
Bye~~~