19年社招面试经历
2019-12-13 本文已影响0人
skogt
算法关
- LeetCode
easy
和medium
类型的题目刷一遍,一般面试的题目不出意外基本在里面。leetcode官方也有类似的一些专题比如练习模式 - 有精力的可以看一遍剑指offer这本电子书。结合leetcode,这一关问题就不大了
基础关
大厂最看重的是基础,基础扎实,其他稍微有点瑕疵问题也不大。
iOS基础
- runloop。建议runloop源码通读一遍,这块内容经常被考查。结合该篇文章深入理解RunLoop肯定会加深你的理解
- 内存。
arc
和mrc
的区别。内存管理原理是什么。几个关键字的实现和不同点比如strong
,weak
,assign
,retain
,copy
,unsafe_unretained
。因为涉及到内存,所以会引申到堆栈这一块 - block。block的实质,在
mrc
和arc
中的差别,copy
关键字,和函数指针的联系。__block
关键字 - runtime相关。消息转发几个步骤,消息怎么发送?
- 多线程.gcd,operation。一般会给你一个场景,问你怎么处理。还有就是线程安全这一块
- 锁。这块经常和多线程一起进行考察
- kvo原理
- 属性,协议,分类,扩展
- delegate, block, notification
网络
- http1.1,http2,https协议。https怎么验证的。三次握手四次挥手。
- socket,websocket区别,tcp联系
- http缓存
- 404,500,200,30x状态码(优先级比较低)
- 网络性能优化相关。比如dns解析,probuf等
...
数据库
如果你应聘的岗位是im相关的,那么数据库存储还是要知道点的
- 一般的sql语句,增删改查
- 主键外键索引
升华篇
该篇主要针对的是iOS或者大前端的
- 包体积优化步骤
- 启动时长优化(结合
dyld
源码还有一些清晰认知) - 卡顿检测
...
项目篇
简历中的一些项目进行盘点。这块你必须拿下,如果自己项目都模棱两可,基本也就结束了。
- 简历中自己觉得拿不出手,没含金量的就没必要放进去
- 自己没搞明白的也不建议放入
- 写的项目,在面试前,最好可以先预设一些可能延伸的问题和知识点
项目考察一方面是对你在上家公司专业能力的考察,也是对你表达描述能力的一种考察
喜欢问的一些面试题
- arc与mrc的相同点和不同点, 他们都是怎么进行内存管理的
- 内存管理一些关键字的考察
strong
,weak
等 - 简单说下
runloop
,和线程的关系是什么。线程没有runloop
可以吗 - 什么时候会发生野指针?怎么避免野指针
- 进程线程的关系,线程和队列的关系,gcd和operation,thread的关系。
- 接着5多线程,多线程编程,死锁,会拿出一些实际的例子让你多线程编程,有可能手写。有些可能需要用到一些锁配合
- 接着6,提到多线程,也用到了锁,就会问题一些常用的锁。nslock,信号量,自旋锁,递归锁等。然后会问一些线程安全相关的题目,为什么会不安全?经常拿字符串举例
- block中怎么传值,引用循环时怎么处理。哪些情况会引用循环。block实质。block在arc和mrc的区别等
- 事件响应链
- 属性
- method swizzling 机制
- 消息转发
- 描述tcp三次握手
- autoreleasepool对象的声明周期
- 怎么监测到一个对象被释放了
- appdelegate声明周期
- category
- +load,+initialize
- 常用的设计模式
- 介绍以往项目
- 你觉得在这家公司中觉得最有挑战性的一件事情?
- nsdictionary本质是什么
- nsarry和nsset的区别
- 对于大前端建设你有什么看法,rn,weex,flutter有接触过吗
- 算法考核
...
还有很多一些衍生的,就不详细阐述了..
后记
客户端整个大环境趋于饱和,所以就业形势不太乐观,导致要求往后只会越来越高。但是在高级资深这一块还是有一定份额的。后端和前端相对客户端来说比较吃香点。
再说社招,社招本来就是相互选择的事情,一时没得到自己期望公司的offer也没关系。。继续找吧。面试有个好处就是在面试过程中你会发现你的补漏点,面试也是一次练兵的机会,中间你会知道自己的能力和薪资水平。