MENU

iOS 面经

May 10, 2019 • Read: 911 • Note

2019春招

腾讯一面

  1. 算数表达字符串计算结果
  2. 堆栈区别,为什么栈从高到低
  3. 哈希表为什么可以实现O(1)查找复杂度
  4. 网络大端,小端
  5. 多线程为什么会死锁
  6. OSI七层+协议,4G和5G工作那一层
  7. Objective-C的property,block底层实现原理

蚂蚁金服

一面

电话45min

  1. 自我介绍
  2. 看你的简历上有学过ML课程,讲一下里面的算法吧

    • 怎么进行线性回归,过拟合与欠拟合
    • 线性回归和逻辑回归区别,具体用来作什么
    • 分析具体问题
  3. 具体讲一下做的项目

提问:如果有机会实习,平时工作状态?

二面

电话25min

  1. 自我介绍
  2. 网络请求的封装
  3. MVC与MVVM
  4. 具体不记得

提问:如果有机会实习,平时工作状态?

三面

电话20min

  1. 自我介绍
  2. 平时开发遇到的问题,如何解决(个人项目一个小bug,解决过程),从中的启发
  3. 算法:n个图,不同高度,要求找一个合适的高度进行流布局,如何找?
  4. 英语怎么样
  5. 以后学习打算

提问:请问还有后续面试吗?

HR四面

  1. 自我介绍
  2. 详细谈谈你的项目以及担任角色
  3. wwdc奖学金详情
  4. 英语怎么样,平时英文用的多吗,考雅思的初衷
  5. 下面我们用英文来场对话(具体问的很长,大概问题如下)
  • Why do you choose Alipay?
  • Your career plan?
  1. 平时成绩,排名怎么样,在校表现
  2. 你把大部分时间花在了你喜欢的事物上,你又如何看待与权衡这些和你学校的课程等
  3. 可实习的时间

提问:

实习期间的一个大概工作状态

实习期间的补贴等

如果有机会实习,大概多久会有offer(骗子HR)

五面补面

  1. 自我介绍
  2. 负责项目相关
  3. 项目的架构,网络请求的封装(简历上)
  4. pod install和update区别,~>指定版本号如何确保最适并兼容的版本
  5. 最近遇到的困难,如何解决,细聊
  6. 项目中MVC与MVVM细聊
  7. MRC与ARC区别和原理

没给提问机会

钉钉一面

  1. 介绍一下平时怎么学习iOS的
  2. ARC与MRC区别
  3. 你说到了Runloop,他是个什么东西
  4. 聊聊你的项目,为啥你的个人app打开就闪退
  5. 怎么追踪崩溃信息,函数调用堆栈
  6. 多线程用过啥,GCD与OperationQueue区别
  7. ABCD四个任务,怎么先让AB并发执行完了再执行CD,如何在里面加锁
  8. 操作系统如何分配任务(调度算法)
  9. HTTP,TCP和Socket联系
  10. 算法:快排,1亿个数找到前一万个最大的
  11. wwdc的session都看过吗

2019秋招[补录]

阿里校招补面Oct 22

就着简历问,几乎简历上写啥问啥,所以个人认为很多面试都是以简历的内容为中心,然后作一些拓展

e.g.

简历上写了MVVM,讲一下你理解的MVVM,数据的流向等等到底是什么

简历上写了对离评渲染的优化,仔细讲一讲是怎么优化,怎么用Instrument调试的

美团(ReactNative方向?)Nov 6

核心问题:你简历上写了你崇尚Swift,那你说说

  • 你看过Swift源码嘛(几乎没有)
  • 对SwiftUI了解怎么样(还没系统的开始学)
  • 值类型和引用类型的区别(balabala)
  • 你说的写时拷贝机制到底是什么(balabala不太记得了)
  • Swift和Objective-C的一切区别以及各自优缺点(balabala)

如果我要把你招过来,你的工作强度非常高你能承受得了吗?

答:不能,快滚,再问老子打死你🐶

或者说给你安排你并不想做的或者枯燥无味业务(RN)呢?

再您的见👋那您问我Swift看没看过源码是几个意思?

滴滴

我们这边一共给你安排四轮,你这边可以吧?可以

一面

把简历上写的每一条,对应的那一面的知识点全问了一遍

包括但不限于:

  • 离屏渲染
  • hitTest和pointInside其中的响应链怎么传递怎么识别手势,点击屏幕时的封IOHIDEvent手势到分发SpringBoard到进程间通信port转发等等那一套
  • 信号量的使用和概念,操作系统内的进程间通信的方法
  • 逆向反编译重签名动态库注入以及你用逆向干了什么

你有什么想问的:没有

二面

开始完全不按常规出牌,面试体验前所未见

  • 自我介绍
  • 你有什么想了解我们的
  • 你对我们这边有什么想法,有什么打算,尽情说
  • 感觉你来北方的欲望不是很强啊,是因为地域原因吗还是什么
  • 你现在有多少offer了

全程几乎我在提问,是让我提出问题面试官来给我解答,除了自我介绍

三面

更加迷,这让我对面试产生了一些误解

  • 自我介绍
  • 你为什么想要换工作,你觉得你现在的工作哪里不好
  • 看你写了个框架,你都干了些什么呢,这个框架都参考了哪些
  • 你最大的优点是什么,最大的缺点呢
  • 你平时喜欢干嘛
  • 你现在实习,别人对你的评价怎么样,公司的氛围怎么样
  • 你导师对你工作的评价,平时工作上怎么指导你
  • 你现在有多少offer了

提问:

我感觉最近面试进度有点慢啊,这是为啥呢😒

答:因为最近比较忙哈😅

字节跳动(深圳疯狂招)

一面+二面

一面面试官非常凶,好像带一点湖南口音,隔了十分钟之后的二面就比较和蔼,当时一面好多没回答上来感觉

算法:

  • BST找到第k小的节点
  • 反转链表

底层原理篇(被问到的时候受到了一点惊吓)

  • NSObject内存布局,里面有什么
  • Person对象里两个property,实例对象占多少字节以及详细分析
  • weak的原理以及它是怎么实现的
  • KVO是怎么实现的
  • assign和weak的区别,用assign修饰OC对象会怎么样

逆向:

  • 重签名动态库注入原理
  • 讲讲逆向你都干了些什么
  • 动态库静态库详细区别

简历其他相关:

  • 看你简历上写到了,那就讲讲离屏渲染(参考即刻发的一篇技术博客)
  • 如何检测fps

框架篇:

  • 你写的框架是干嘛的,有什么功能,和系统的比有什么区别或者特点
  • 函数式编程的思想和响应式编程
  • 框架和App都适配了Dark Mode,它们是怎么实现的
  • iOS13里面相关的都有哪些新API(参考WWDC19 session)
  • 你的框架用了CI,具体是怎么部署的

业务相关:

  • 我们头条的App有好几百个页面,你觉得怎么才能尽量快的优化适配Dark Mode,有哪些方案

我说了可以运用KVO,runtime之类的动态替换,这些也许可以快速达到效果,但是细节可能会非常差劲。至于用一个Hex值来设置颜色不可取

个人觉得最好的解决方案是(大小项目都适用):

定义一套UIColor的规范作为extension,类似于一个Mediator,所有代码中设置颜色的部分全部要从这个颜色规范的extension里面来取到,禁止直接使用系统的UIColor的API

面试官反问:这几百个页面,太多了太难改了,那我能不能有更好的办法呢?

~~对不起,没有~~

内心BB:你设置颜色的方法都不统一🙅‍♂️这不就是代码不规范吗?

你们要不要参考一下为什么国外Twitter电报一堆App早就完美适配好了Dark Mode,为什么国内微信或者其他什么什么乱七八糟的App还搞得那个腔调,久久不能适配好呢,到现在晚上我玩个手机还眼睛疼呢🤬

Swift相关:

  • 类和结构体的区别(值类型的写时拷贝)
  • map和filter的区别,以及flatMap
  • UIButton addTarget时加@objc注解的原因
  • 写一个min函数,要求尽量通用(想出了一个简单可以使用<T: Comparable>)

现在你有多少offer了?

三面

  • CALayer与UIView的联系(底层原理)
  • 如何让UIView在进行动画的时候能检测到点击事件
  • 为什么说Swift快而且安全
  • unowned与weak的区别
  • 抖音首页下拉刷新如何优雅地实现
  • app里请求网络除了HTTP通信还有什么通信协议
  • ......

四面

  • n个有序链表,长度都为k,进行合并
  • 为什么数组声明了atomic是没有用的
  • 自旋锁和互斥锁的区别
  • iOS里面你了解几种hook
  • 听说过inline hook吗(递归函数可以进行inline吗)
  • AB两人玩抛硬币,谁抛到正面谁赢,A先抛,赢得概率是多少?(2/3)
Last Modified: December 5, 2019
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment

3 Comments
  1. Derek Derek

    丁丁的第四个问题太逗了/xk

    1. @Derek哈哈哈哈哈哈,我跟他说是因为网络原因@(黑线)这个bug发现好久了但是还没来得及去解决

  2. 太难了 大厂再见👋