zhangferry/iOSWeeklyLearning

面试题整理

Opened this issue · 3 comments

可以将自己遇到的感觉有价值的面试题列到这里,如果有好的解决方案参考资料可以放到这里,后续我会整理出来。

快手 视频面试
1 atomic noatomic
property atomic nsinteger i
//线程1
for (10000)
self.i++;

2
NS_DESIGNATED_INITIALIZER 使用过吗?

3

@interface DogTest : NSObject
 + (void)test;
 - (void)test;
 @end

 @implementation DogTest

 - (void)test {
    NSLog(@"TEST");
 }
 @end

@interface NSObject (Test)
 + (void)test;
 - (void)test;
 @end

 @implementation NSObject (Test)

 - (void)test {
    NSLog(@"TEST");
 }
 @end

 int main(int argc, const char * argv[]) {
  @autoreleasepool {
    //1
      [NSObject test];
      [[NSObject new] test];
    //2
      //[DogTest test];
      //[[DogTest new] test];
   }
   return 0;
}

4 
func test1() {
      DispatchQueue.main.sync {
            print("1")
      }
  }

func test2() {
        print("1")
        let que = DispatchQueue.init(label: "thread")
        que.async {
            print("2")
            DispatchQueue.main.sync {
                print("3")
                que.sync {
                    print("4")
                }
            }
            print("5")
        }
        print("6")
        que.async {
            print("7")
        }
        print("8")
    }

5 给定一个正整数N, 请输出N!的结果末尾包含0的个数
例子:5! 120
0的个数是1

好未来电话面试
介绍定时器
为什么Timer定时器不准
涉及到了runloop,讲一讲对runloop的理解

介绍ios遍历方法,for in遍历的时候在里面增加一个元素会怎么样,删除一个元素会怎么样,为什么?

wkwebview设置userAgent的方法知道吗?有遇到什么问题嘛?
customUserAgent 和applicationNameForUserAgent 设置userAgent 有什么区别吗?
wkwebview 使用过程中有遇到什么问题嘛?
UIWebview迁移到wkwebview过程中有遇到什么问题或者麻烦吗?怎么解决的
js交互前端代码安卓和ios为什么要写两套,有办法一套解决吗

怎么自己设计一个系统的UIScrollview。

理想汽车
介绍一下runloop和runtime,有用过runloop和runtime做过什么事吗
UIView和CAlayer
介绍一下组件化是怎么做的。怎么解耦的
网络层封装做了哪些事
假如A业务模块和B业务模块都要引用同一张icon,怎么处理的。
路由和target-action这两个方案的优缺点。
数据是怎么加密的,怎么保证逆向拿不到我们的加密秘钥。
怎么设计一个崩溃上架框架
alloc做了什么,init呢,new呢,new初始化有什么区别
用MVVM多久了,为什么要用mvvm,怎么对mvvm中的View做单元测试
有左右两个lable,要让左边内容全部展示,怎么布局
设计模式和设计原则,UIKit设计中有用过哪些设计模式或者设计原则。

头条
1.使用过哪些三方库,看过源码吗?
2.YYKit使用过吗?你觉得有哪些值得你学习的地方
3.SDWebimage使用过吗?解码过程中是怎么样的
4.YY加载图片和SD加载图片有什么区别吗?

1.知道weak吗,
2.用得多吗?知道什么应用场景吗?
3.底层实现是啥知道吗?是什么结构知道吗?怎么解决寻找冲突的
4.知道MLeaksFinder吗?是怎么实现的吗?

编译链接你有了解多少
有用过反射吗?什么情况下会想到用反射,有没有别的办法
RAC信号的理解
谈对引用计数的理解
手指点击屏幕发生了什么
知道有哪些锁,用过哪些锁,可以不可以用别的锁代替,是怎么考虑的
代理用什么修饰,有用过strong修饰代理吗?为什么要用strong修饰
https是基于什么加密,为什么加密了还能通过抓包工具抓取https,抓包过程是怎么样的。
了解bitmap吗?结构是什么样的,有对做过什么优化吗
可变数组的实现原理

组件化的理解,Pod update和pod install的区别,简单说一下内部是怎么实现的

算法:
盛水问题,
走台阶问题,
找链表倒数第k个元素,
链表是否有环,
遍历二叉树,
手写快排

某上市公司
Delegate 、Notification和KVO比较各自的优缺点
在一个UI的正中间实现一个正方形的红色视图有几种方式?
手触碰到屏幕的时候,响应机制是怎样的?第一响应者是谁?追问 UIView和UIResponse的关系是什么?
UIViewController的生命周期是什么?追问 UIViewController 只alloc而没用到的时候,
UIViewController 的view是否加载了?如果没有加载那什么时候加载?
直接用UILabel和自己用DrawRect画UILabel,哪个性能好?为什么?哪个占用的内存少?为什么?
AFNetworking是否支持ipv6?
项目采用64位,为什么要用64位?怎么修改成64位?i386是什么?他们有什么关系?
iOS的应用程序有几种状态?追问,退到后台代码是否可以执行?双击home键,代码是否可以执行?
一般使用的图标内存为多大?比如200×300的图片,内存应该占用多少比较合理?
说说你对内存泄漏的看法,追问,block为什么容易引起内存泄漏?
[object copy]是浅拷贝还是深拷贝?为什么是浅拷贝?copy是实现了哪个协议?
Images.xcassets和直接用图片有什么不一样?

内存管理方面的
多线程
各种队列
线程锁
MVVM
各种问题都问的特别细

算法:
如何删除链表中等于某个值的所有节点?
如何反转二叉树?
如何验证两个二叉树是完全相等的?
如何合并两个有序的数组之后保持有序?
输入给定整形数字n内所有的质数

  1. 怎么在汇编实现方法调用时间的计算?
  2. fishHook的原理是什么?
  3. pod install 的内部怎么实现的?
  4. xcode的space,project,target的区别和联系是什么
  5. category怎么实现一个weak属性?
  6. xcode的编译流程做了啥

1、如何检测OOM
2、source0和source1的区别,触摸事件跟它俩有什么关系
3、图片解码发生的时机是什么
4、两个类的load方法里互相创建另一个类会怎么样
5、CCache的原理是啥,它跟Xcode里的Derived Data有什么区别
6、IR和bitcode有什么区别
7、不用dipatch_once来写单例