个人介绍
笔者是2018年应届毕业生,软件工程专业,北京某211高校本科生+研究生。学校里主要学了一些软件工程的基本知识,语言、数据结构、数据库、之类的。但是后面也都不记得了。研究生开始学习iOS,后面做了一份iOS开发实习。到校招开始也就几个月的iOS开发经历。
校招开始
在2018秋招刚开始的时候,笔者的知识储备其实很差,基础知识除了数据结构都不太记得了,iOS相关知识只是了解实习时用到的,很浅显。这是前提。
投了一些公司的内推,做了很多笔试,然后过了一两个月陆陆续续接到了一些面试通知。
关于笔试
各公司的在线笔试大同小异,选择题和编程题,有的公司还有问答题。主要在线笔试平台是牛客网、赛码网。要准备校招的同学可以提前去刷题,笔者是先刷了一部分LeetCode,但是仍然建议直接去牛客网刷题,可以知道自己的内存和时间使用是否超过限制,也可以熟悉输入输出规范。主要考点除了专业方向知识以外,还有数据结构(树、数组、链表等),数据库,计算机网络,操作系统等等,基本上就是学校里学习过的那些。编程题一般就是算法题,去LeetCode或者牛客刷题就可以了,有余力的同学可以准备看一下动态规划,笔者基本上就败在动态规划上。
关于面试
面试一般都是三轮技术和一轮HR面。面试过程中一般都会问有没有项目,如果有的话肯定会考察项目中的知识点。
第一轮基础面,主要面一些专业相关的基础知识和基本的数据结构等等。第二面比第一面稍微难一些,同样的知识点会问得更深,更底层。
第三面是俗称的经理面,一般考察你的额外知识面或者一些团队协作综合能力(一般前两面面过了第三面过得可能性比较大)。
面试中很经典的一个问题是,你遇到过什么技术难点?或者你印象深刻的一点?这个一定要好好准备,面试官是想从其中看到你的解问题思路。
当三面都结束就可以安心等待HR面啦。HR面只要不出什么大问题,比如让HR看出你的态度或者价值观什么的很有问题,一般就okay啦~
笔者的iOS方向的面试知识点累积下来,大概有这些:
实习项目相关
- autolayout
- core animation
- displaylink 和 timer的区别
- timer + runloopmode,滚动屏幕时的timer失效
- audioplayer/audiorecorder
- notification 和delegate和block的区别
- gcd
- jscore
- oc/c混编
- runloop面试考察的知识点
1. runtime(运行时)
2. 用过的第三方库或者github上看过开源项目吗
3. 设计模式
4. nstimer
5. c++ 堆和栈
6. 修饰符,strong weak assign nonatomic/atomic,copy,retain。。。
7. block 循环引用
8. delegate
9. nstimer+runloop的mode,底层实现
10. arc/mrc,内存管理。
11. category
12. 内存泄漏怎么检查,排错
13. kvo和kvc
14. UIview和layer的区别
15. releasepool
16. 生命周期
17. __block,__weak,__retain
18. NSUserDefault
19. core data
20. UIBUutton和UITableview继承关系,到NSObject
21. NSRunlooph和线程
22. UITablecell复用,有个cell list
23. weak和assign区别
24. http和https的区别,HTTPS加密
Tips
刚开始进入校招的时候,尽量先面一些你觉得希望不大,或者你不太想去的公司,累积经验,不要怕自己面试状态不好,一开始面试大家状态肯定都是不好的。多面才能不断提升!!笔者面第一家的时候格外紧张,秉着广撒网的目的投了很多根本不会去的公司,结果累积了很多经验以后,后面面试得心应手了很多。另外,每次面试,一定要记下面试官的问题,回来巩固复习,面试官每次的问题基本上考察的点不会相差太多,一旦你把所有的点复习准备了,下次面试一定会更好。
后记
笔者也是从校招小白过来的,最后收到了人人、滴滴、美团、饿了么的offer。总的来说,不要怂,失败是成功之母!希望大家都能拿到自己心仪的offer啦啦啦~