0%

职场四精英面试题

涂鸦智能(西法)

  • jsbridge的实现原理
  • mvvm如何拆分vm,拆分的依据是什么
  • 多线程如何实现同时读读,读写互斥
  • 项目中运用到的觉得有技术深度的点
  • 在图片展示的过程中CPU与GPU各自负责什么工作
  • 怎样设计一套缓存
  • rxswift里的map等函数用法,题目忘记了

爱奇艺(德叔)

  • 函数调用时,栈怎么运作的;线程 与 线程 之间,栈是 共享的,还是每个线程有自己独立的栈,堆呢?

  • gcd 与 线程 的关系

  • block里面 把__weak 转成 __strong 那个对象就不会释放吗

  • 程序耗电时,怎么设计 监控程序怎么耗电的

  • 程序崩溃的时候,怎么设计 获取去获取 崩溃信息,发生崩溃之后,app退出前

  • iOS里,引用计数 存在哪里的,几种情况?

  • 图文混排哪些方案

  • 有1000桶水,其中一桶有毒;一只猪来试喝水,每只猪只能喝一次,喝到有毒的水会立刻挂掉,可以将每桶水混起来,至少要几只猪,才能找到有毒的那桶水

  • 接上提,如果一只猪不是只能喝一次,而是每隔15分钟能喝一次,喝到有毒的也会立刻挂掉,要在1小时内找出那桶有毒的水,至少要多少只猪

  • 冒泡,快速排序

  • 一个数比如657,将每个位置上的数重新排列,找出,大于当前数的,最小的那个:675,重新排列:675,567,576,765,756,大于 657 的最小的数是 675

  • 有一个矩阵,0表示水,1表示陆地,1的上下左右全是水的时候,表示一个岛屿,伪代码找出矩阵中岛屿个数,几个1相邻时看作一个岛屿:

    • 示例
  • 给定两个正整数row, col ,生成一个包含 1 到 row*col 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵

  • javascriptCore 与 原生交互原理

海康一面

  1. runtime应用
  2. runloop使用过程中要注意什么
  3. 怎样保证读写安全
  4. mvvm在项目中的应用
  5. iOS响应链
  6. UIView动画、masonry为什么不会有循环应用的问题

海康二面

  1. masonry为什么不会有循环引用的问题
  2. runloop和autoreleasePool的关系
  3. GCD group、semaphore
  4. 优化相关的工作做了哪些
  5. SDWebImage实现原理
  6. js与原生交互实现原理
  7. 事件响应链
  8. 怎么扩大button的点击范围?hitTest做了什么工作?

e签宝

  1. crash防护
  2. 通知为什么会引起崩溃
  3. Native和H5交互的原理
  4. KVO原理(OC和swift各自怎么实现)
  5. 父类和子类的析构函数调用顺序(init方法?)
  6. APP之间的通信方式

考拉海购

  • 直播里面的业务怎么解藕的,不同的模块之间如何通信的
  • 各种锁性能有没有做过对比
  • 点击事件的原理讲一下(讲了一波响应链)
  • block有几种类型,对基本数据类型和对象类型分别是如何引用的。如果要修改基本数据类型的变量呢?
  • BaseRequest里面
  • HFBasePageRequest
  • 引用计数器原理
  • Category如何加载的,用过这个吗?有没有遇到什么问题
  • Mach-O文件里有哪些东西,为什么要区分Segment,Section?
  • HTTPS为什么是安全的
  • Runloop有哪些Mode,源码对CommonModes中是如何存储的(没说出来)
  • 如何自己设计一个类似NSNotification的通知?
  • 不用dispatch_once,如何自己设计
  • 直播间点赞,主态-客态,客态-客态间有哪些需要注意的点
  • 工作中你是如何推进项目的

微拍堂

  • 如何Hook App中所有请求的地址
  • 如何Hook三方SDK提供的block方法
  • Extension和Category的区别
  • Runloop平时用到吗?
  • GCD平时用到哪些
  • 如何实现按顺序执行多个请求
  • AutoreleasePool,在pop的时候是如何找到哨兵对象的。
  • MVP,MVVM说一下
  • iOS异步渲染

手淘特价版

  • 让A,B两个线程交错打印
  • 举一个死锁的例子
  • SideTable格式再看一下
  • 两个VC:a,b。说一下从a跳转到b时,生命周期的过程。
  • 接上题:如果是a addChildVC b呢?
  • 一面笔试

其他

  • 在子线程中使用performSelector:withObject:afterDelay方法,使用完毕后,需要手动销毁线程吗?
  • 对象A被多个weak指针所指向。若持有其中一个weak指针的对象B被释放,A在执行dealloc方法时,让对应weak释放,会造成野指针崩溃吗?
  • barrier不能对dispath_global_queue生效
  • 静态库 与 动态库 区别
  • fishhook探索iOS应用编译及启动的原理
  • 子线程 runloop 是默认不开启的,子线程时使用 autorelease 局部变量,是怎么释放的?
  • 西法1
  • 方法替换,会替换掉父类的方法么?会影响其他类么?

边锋

天猫好房

  • 你做过最有难度的事?
  • 你做过最有挑战的事?
  • 工作中做过那些事?带来了哪些结果?
  • RXSwift的优势在哪?业务中哪些场景用到了?
  • RTMP,FLV,h264,hls这些协议有啥区别
  • 说一下isa指针
  • Swift和OC相比,有什么优势和劣势。

哈啰单车

  • 互斥锁,自旋锁的区别
  • SDWebImage了解过么
  • GCD在项目中用了哪些使用场景