阿讯电面+现场面

电面

大概就是先问一些OC基础问题,再问项目相关的问题

OC属性相关

  1. OC属性有哪些
    原子性/非原子性, strong/weak/assign/copy, 读写,nonullable/nullable , 四类,然后问还有么,不知道了
  2. weak和assign的区别
    前者用于OC对象,在对象释放之后,将指针置为nil,后者用于基本数据类型,不能置为nil
  3. weak为什么能置为nil
    有一个全局的SideTable,里面有个Weak表。。。。
  4. 什么情况下用copy,有哪些使用场景
    String, NSAarray, 它们有可Mutable的子类,不使用copy,可能会导致一些意外的修改,还说了Block使用Copy,因为从MRC的习惯带过来,然后问我在ARC下可以用strong吗,我说可以

autoreleasePool的实现

若干autoreleasePoolPage以双向链表实现,然后讲了page的结构,怎么加auto release对象

循环引用的例子

我讲了下delegate、block的、timer的例子,问我还有么,还不够么QUQ

怎么发现内存泄漏

我说用笨方法,dealloc那里打印,或者用leak工具,还有一些第三方的,问我有哪些第三方,啊,我不知道

多线程

  1. 有哪些:GCD、NSOperation、NSThread、pThread
  2. GCD/NSOperation的区别
  3. GCD有哪些队列:串、并、全局、主
  4. GCD怎么控制并发数:信号量,然后问我怎么控制

runtime

  1. 问我什么是runtime,然后我讲了下消息的发送与转发机制
  2. 问我runtime的使用场景:说了下方法交换、关联对象、判断类型、或者某个类的所有属性,然后问我还有么,我说大概就这些用得比较多

网络模块

  1. 怎么封装网络请求
  2. 有没有做失败统计
  3. 耗时统计,怎么优化
  4. 怎么保证安全性
  5. API的失败策略

Crash

  1. 怎么处理crash
  2. 导致crash的原因
  3. 怎么解决crash

HTTPS

  1. 怎么保证安全:说了下SSL/TLS的握手过程
  2. DNS的挟持怎么解决

TCP的三次握手

LLDB

逆向方面

因为我做过逆向方面的,所以问了下逆向方面的问题

  1. 在逆向做过哪些工作,我说下逆向对家的app看他怎么实现的
  2. 问我还有么,我说微信的抢红包,问我具体怎么找
  3. 写的插件怎么打包

项目相关的问题

  1. XX下载是怎么实现的,保证更新逻辑
  2. 比较困难的地方

其他

  1. 为什么想要离职
  2. 薪资待遇

现场面

自我介绍

app编译的过程(前编译&后编译)

我不知道,万万没想到,我看了main函数前后发生了,结果问了我更前面的事情QUQ

iOS 内存分配

1.堆、栈、代码、全局、常量 5个区
2.栈的地址是高位到低位还是低位到高位,忘了,50%,随口说了个,我说是高位到低位,刚翻了下,猜对了,然后问堆呢,我说相反
3.栈的大小,我不知道QUQ

TableView的优化

RunLoop的原理

讲了RunLoop的模式/事件源/定时源/观察者模式,与线程的关系

多线程

1.多线程的几种方式
2.GCD与NSOperation有什么不同
3.GCD用什么方式调度队列的

反编译

做过越狱相关的,然后说了下逆向对家的app的过程,然后还没说完就换问题了

HTTP与HTTPs的区别

了解TCP么

我说还行,他问断开一个TCP连接要经过几次握手

了解数据结构么

然后问了树有哪些

手写快排

其他

1.自己最大的缺点
2.之前面过腾讯么
3.成家了么
4.对加班怎么看
5.家在哪
6.跳槽的原因

你可能感兴趣的:(iOS)