一面

作者: M_PI_4 | 来源:发表于2020-08-09 01:33 被阅读0次

    前言
    近期的iOS面试求职算是经历了一波小高潮,话不多说,直接切入正题,下面是我总结的2020某些大厂以及小公司的面试题!

    目录
    1、iOS 基础题
    2、iOS 实战题
    3、网络题
    4、计算机系统题
    5、设计模式题
    6、架构 & 设计题
    7、数据结构&算法题

    1、iOS 基础题
    1,分类和扩展有什么区别?可以分别用来做什么?分类有哪些局限性?分类的结构体里面有哪些成员?

    2,讲一下atomic的实现机制;为什么不能保证绝对的线程安全(最好可以结合场景来说)?

    3,被weak修饰的对象在被释放的时候会发生什么?是如何实现的?知道sideTable么?里面的结构可以画出来么?

    4,Autoreleasepool 所使用的数据结构是什么? AutoreleasePoolPage 结构体了解么?

    5,讲一下对象,类对象,元类,跟元类结构体的组成以及他们是如何相关联的?为什么对象方法没有保存的对象结构体里,而是保存在类对象的结构体里?

    6,iOS 中内省的几个方法? class 方法和 objc_getClass 方法有什么区别?

    7,RunLoop的作用是什么?它的内部工作机制了解么?(最好结合线程和内存管理来说)

    8,哪些场景可以触发离屏渲染?(知道多少说多少)

    2、iOS 实战题
    1,有哪些场景是NSOperation比GCD更容易实现的?(或是NSOperation优于GCD的几点,知道多少说多少)

    2,App 启动优化策略?最好结合启动流程来说(main()函数的执行前后都分别说一下,知道多少说多少)

    3,App 无痕埋点的思路了解么?你认为理想的无痕埋点系统应该具备哪些特点?(知道多少说多少)

    4,你知道有哪些情况会导致app崩溃,分别可以用什么方法拦截并化解?(知道多少说多少)

    5,你知道有哪些情况会导致app卡顿,分别可以用什么方法来避免?(知道多少说多少)

    3、网络题
    1,App 网络层有哪些优化策略?

    2,TCP为什么要三次握手,四次挥手?

    3,HTTPS的握手流程?为什么密钥的传递需要使用非对称加密?双向认证了解么?

    4,HTTPS是如何实现验证身份和验证完整性的?

    5,如何用Charles抓HTTPS的包?其中原理和流程是什么?

    4、计算机系统题
    1,了解编译的过程么?分为哪几个步骤?

    2,静态链接了解么?静态库和动态库的区别?

    3,static和const有什么区别?

    4,什么时候会出现死锁?如何避免?

    5,有哪几种锁?各自的原理?它们之间的区别是什么?最好可以结合使用场景来说

    5、设计模式题
    1,除了单例,观察者设计模式以外,还知道哪些设计模式?分别介绍一下

    2,iOS SDK 里面有哪些设计模式的实践?

    3,设计模式的成员构成以及工作机制是什么?

    6、架构 & 设计题
    1,MVC和MVVM的区别?MVVM和MVP的区别?

    2,面向对象的几个设计原则了解么?最好可以结合场景来说。

    3,可以说几个重构的技巧么?你觉得重构适合什么时候来做?

    4,你觉得框架和设计模式的区别是什么?

    5,看过哪些第三方框架的源码,它们是怎么设计的?设计好的地方在哪里,不好的地方在哪里,如何改进?(这道题的后三个问题的难度已经很高了,如果不是太N的公司不建议深究)

    7、数据结构&算法题
    1,链表和数组的区别是什么?插入和查询的时间复杂度分别是多少?

    2,哈希表是如何实现的?如何解决地址冲突?

    3,排序题:冒泡排序,选择排序,插入排序,快速排序(二路,三路)能写出那些?

    4,链表题:如何检测链表中是否有环?如何删除链表中等于某个值的所有节点?

    5,数组题:如何在有序数组中找出和等于给定值的两个元素?如何合并两个有序的数组之后保持有序?

    6,二叉树题:如何反转二叉树?如何验证两个二叉树是完全相等的?

    结语
    iOS面试中刷题只是一方面准备,但是,好的面试机会,离不开技术的支持,在找工作的同时,不要忘记提升自身技术,希望求职中的iOS开发者,找到一份自己满意的工作!

    相关文章

      网友评论

        本文标题:一面

        本文链接:https://www.haomeiwen.com/subject/gxnkdktx.html