本次面试周期为一周,准备时间为一周。
本次面试共投递25家,约面11家,最后大厂只面了360、字节,实际面了9家,收到4家offer。
事实证明:iOS有人要,很香。
说明:16年毕业,非重点大学,非计算机专业,本科
经过这次面试,对自己的定位又有了更多的认知,由于之前工作经验的原因,音视频这块将会成为我今后的主要方向,下一次希望能做到一个资深iOS音视频工程师,我也会把更多时间放到这上面。
确实算法能考察一个人的聪明程度,这段时间完全被女票碾压,好在算法多做一些,总结规律,也能把人训练的更聪明,像奥数一样。
建议大家用C写算法题;平时leetcode也用C。
主观面试感受
-
最右印象较差,面试官不nice;
-
360最佳,很细心,很喜欢他们的leader;
-
其他公司均不错
-
几乎每一家都有算法题,但整体难度不大(大部分是动态规划+树的遍历)
360 音视频岗位
主观评价:面的是音视频中台的岗位,本以为HR会推荐业务岗,准备不充分
一面:
-
以往直播和相机的业务考察
-
AVFoundation、GPUImage
-
两道算法题(追问优化)
二面:
-
AVPlayer实现原理、数据缓存
-
OpenGL ES 处理流程
-
硬编、软编
-
直播整体流程
-
滤镜实现原理
然后回去让我等通知,说一周内。
抖音 业务岗
主观评价:吐槽下,猎头给我很多面试题,让我背,结果一个都没遇到; 希望大家遇到一个好的面试官
-
大数相加
-
树的遍历(递归,队列两种方式)
-
事件响应机制(传递链、响应链、手势)
算法写出来了但花了50分钟,然后一个小时就过去了,我。。。能力不足,leetcode还要继续。
天真互动
主观评价:这家虽然是创业公司,有三面,算上HR是4面,最后一面我感觉面试官水平超高,应该是个大神,被虐,但还是拿到了他家的offer。
-
xcode 证书校验过程
-
json转model实现
-
动态库静态库区别
-
用纯AVFoundation框架,向视频中加入一个水印怎么做
-
GPUImag框架介绍
-
网络如何优化
-
camke用法
-
视频从采集到显示,最终写入文件流程
-
AVPlayer缓存技术
-
视频如何2倍播放,2倍速导出
-
charles原理
-
samplebuffer与pixelbuffer区别
-
CMTime结构
这个人的问题专业程度不逊于360。
最右
一面
-
crash崩溃怎么解,崩溃到底层代码
-
AVplayer 遍播遍下载
-
如何设计一个网络库
二面
-
FBO、H264、GPUImage3、
-
大图加载、PCM计算时间、
-
如何实现分割滤镜、
-
音视频编码
美术宝
主观评价:我感觉是最高效的,简洁
-
kvo
-
block
-
notification
-
runloop
-
二面有个算法题
两次面试加一起50分钟,然后就发offer,牛。
其他公司
主观评价:大小公司都会有算法,有的用牛客网,有的用leetcode,纯手撸,无提示。
-
NSCache 应用场景 与NSDictionary区别
-
git工作流
-
常见的锁,哪个性能最差,以及原因
-
app逆向分析
-
leak工具使用
-
charles原理
-
http与https区别
-
组件化思路
-
持续集成方案
-
copy、assign区别
-
内存对齐
-
sel、_cmd、isa
-
Tagged pointer
-
剪刀石头布
-
最长不重复字符串
-
大量的数字排序
-
leetcode 32
-
leetcode 1237
-
leetcode 828
-
leetcode 283
-
leetcode j67
-
leetcode 116
-
函数调用机制
-
消息转发
-
h5、js
总结
iOS底层:
-
kvo、
-
runtime、
-
kvc、
-
notification、
-
runloop、
-
关键字(copy、assign、strong)、
-
block、
-
GCD
其实东西不多,理解底层对于记忆规则,有很大帮助。建议源码和《iOS和OS X多线程和内存管理》一起看,以及一些大神的文章
音视频方向:
-
从AVFoundation入手,然后GPUImage,在然后OpenGL ES、MetalKit
-
ffmpeg、opencv
-
c\c++
-
rtmp、webrtc
其他:
-
组件化
-
设计模式与原则
-
网络
-
持续集成
-
团队协作流程
面试没有遇到Swift的问题,有点意外,这次面试,大约有一半使用swift,有一家纯swift开发,其余都是混编,或者有业务线是swift。
建议大家先找到工作再辞职,除非工作太忙,没时间。
关于Swift
swift我也准备了,预计明年,swift相关的问题会爆发出来
-
泛型约束
-
关联类型
-
类型擦除
-
where使用
-
codable 如何实现key映射
-
AnyIterator
-
sequence
-
indexable
-
collection
-
map、filter、reduce、sorted
-
如何实现链式编程(snapkit)
-
函数派发机制(class、struct、extension、protocol)
-
kvo失效怎么办
-
内存管理 pwt、vwt
-
内存,统一类型的变量可选值与非选值内存有什么区别
如果你正在跳槽或者正准备跳槽不妨动动小手,添加一下咱们的交流群642363427来获取一份详细的大厂面试资料为你的跳槽多添一份保障。