字节飞书iOS客户端实习一面面经

作者:Saafo 链接:https://www.nowcoder.com/discuss/557294 来源:牛客网

自我介绍

接触iOS多久了?做iOS的理由是什么?

面向对象的基本概念?

  • 答:封装、继承、多态(解释了一下)

  • 问:继承和多态的区别是什么?

  • 答:略

堆和栈的区别?

  • 答:高到低、低到高;存一般的数据结构、存对象和手动分配的内存;性能不同,栈销毁只需要移动指针,堆需要手动销毁

  • 问:为什么要这样做?(字符串等放在栈,对象和手动分配的放堆里)

  • 答:感觉和作用域有关吧,作用域是线性的,然后进出作用域的时候销毁起来方便,也更快

  • 问:还有其他原因吗

  • 勘误:栈拓展起来更方便

了解哪些锁,大概说一下?

  • 答:自旋锁和互斥锁,自旋锁就不断尝试,需要占用CPU时间,适合需要高频获取的资源,但其他进程很少用到的,线程不安全;互斥锁就是不断尝试,但每次尝试之后会休眠,等待操作系统唤醒。个人猜测这个是基于操作系统内核实现的,就是尝试之后就回到block状态,然后等待有资源了,内核会将其调度到ready&running态,然后再去尝试获取资源。

解释一下中断?

  • 答:调试的breakpoint?

  • 问:操作系统里的

  • 答:大概解释了下一个程序正在运行的时候遇到中断,先检测有没有关中断,如果没有的话就把上下文保存起来,然后切换到中断服务程序,运行完之后再回到当前,把上下文复原,这样...

  • 勘误:关中断和开中断还可以再详细一点

  • 问:中断分为哪些?

  • 答:硬中断和软中断吧,硬中断主要是硬件产生的中断,比如按键盘啊之类的,软中断主要就是软件产生的中断吧。

iOS知识知道多少,都说一下?

  • 大概从生命周期、runloop、runloop mode、observer、source0/1、timer讲到autoreleasepool开发中使用时机、autoreleasepool的释放时机,大概这样。

算法三数之和

最后更新于