给最近正在找工作(iOS)的朋友一些建议/经验
众所周知, iOS开发找工作越来越难, 企业要求越来越高,一方面是资本寒冬期+七八月是企业招人淡季, 另外一方面也是iOS市场饱和。最近有出去看新机会, 所以下面记录一下面试XimalayaFM的大概过程。
面试一共分为4轮,全程手写代码和算法。
一面:自我介绍, 然后问一下手头开发App日活和崩溃率,接着开始问
1. 无痕埋点实现原理,手写方法交换代码;
2. 手写代码使用GCD完成: 先并发下载3张图片, 等3张下载完了再并发下载剩余3张, 这里可以使用dispatch_barrage栅栏来区分任务, 也可以使用信号量;
3. timer是否精准, 怎么使用精准的定时器…
4. runloop监听主线程卡顿: 使用observer监听主线程loop, 结合信号量
二面: 手写代码: log(a), postNotification(log(b)),log(c), 问打印顺序, 这里主要考察分线程和主线程的通知回调是否同步,然后又问了UI卡顿优化的问题;
三面: 考察了隐式和显式动画、如何实现圆形进度条、离屏渲染卡顿底层原理(垂直同步信号) 、事件响应链详细过程、socket建立连接详细过程,最后是手写单链表的反转代码;
四面: 主要考察算法: 手写冒泡排序,常用排序算法的时间复杂度, 以基准数偏移的有序数组的查找值为n的元素,要求时间复杂度O(logn)(这里可以利用二分法查找), 最后就问了一些个人职业发展以及现有团队规模问题, 再然后就是谈薪资…
总结: runloop runtime 常用排序算法 链表反转 查找等问题在面试二线大厂的时候基本是必考的点, 最近找工作的朋友需要多留意~