众所周知, 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 常用排序算法 链表反转 查找等问题在面试二线大厂的时候基本是必考的点, 最近找工作的朋友需要多留意~

最新文章

  1. vim删除以#,空格开头的行
  2. rsync+inotify实现实时同步案例--转
  3. .NET委托解析
  4. Visual Studio 2013发布网站
  5. apk反编译(8)如何完全防止反编译?
  6. SQL脚本小笔记
  7. C++ nullptr 的一种实现
  8. Cocos2d-x学习笔记(3)
  9. BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )
  10. WPF六个控制概述
  11. iOS给自定义个model排序
  12. RMQ-ST算法的理解与实现(C++)
  13. java之servlet小记
  14. 安卓开发app在后台运行时页面数据被系统清除后操作之重启APP
  15. django模型系统(二)
  16. SQL学习 存储过程&DUAL表
  17. 日志切割工具logrotate解决Tomcat catalina.out日志过大的问题
  18. BMP280 driver对接单片机I2C或者SPI总线接口
  19. CF1114D Flood Fill(DP)
  20. [LeetCode] 110. Balanced Binary Tree ☆(二叉树是否平衡)

热门文章

  1. 【JAVA8】Set排序四种写法
  2. Programming In Lua 第九章
  3. Ruby中的数值
  4. Codeforces Gym101341I:Matrix God(随机化构造矩阵降维)***
  5. 关于String重写的hashcode的代码分析
  6. nodejs中文乱码问题
  7. [HNOI2011]数学作业 题解
  8. 关于int和integer
  9. Java编程思想:File类list()方法
  10. ASP.NET--Web服务器端控件和Html控件