美文网首页iOS归纳工作生活
iOS 面试题干货(二)

iOS 面试题干货(二)

作者: _烩面_ | 来源:发表于2019-07-21 16:18 被阅读0次

    这里有 我的iOS面试经历 第一版。
    这里再做个更全面的总结,看 iOS 面试过程中究竟有哪些面试题(套路)!
    如有想法,欢迎老铁们评论区沟通交流!

    以下是 iOS面试题个人总结终极版(会不定时更新)!

    来看菜单 👇

    • 写在前面
    • Objective-C
    • swift
    • 网络
    • 编译原理
    • 算法
    • 设计模式
    • 其它
    • 唠会

    话不多说,上菜 🍽️

    写在前面

    面试过程中最重要的是要有 亮点,所谓亮点说白了就是拿的出手的作品。要是有一个 github 上点赞上万的作品,或是圈内名声在外的大佬,面试什么的都不是事!但对于我们大部分开发者来说,一没有耀眼的亮点,二无名声,能拿的出来的就是工作中的作品了。所以我们首先要特别熟悉自己简历上的工作作品,一定要说个所以然来。因为很多面试官都是从简历上你的作品开始问起的。至于总结的面试题什么的都是比较成熟的套路,熟悉了大家都能应对。下面的面试题都是套路,为了不被套路,还是熟悉一下套路比较妥!

    Objective-C

    0. 静态变量和全局变量区别
    1. 日常使用的修饰属性的关键字都有哪些?作用分别是什么?
    2. 属性的实质是什么?
    3. 深拷贝和浅拷贝,`NSString` 为什么要用 `copy` 修饰,换成 `strong` 会有什么问题?`NSMutableString` 可以用 `copy` 修饰吗?会有什么问题吗?
    4. 说一下 `static` 关键字
    5. 什么情况下会引发循环引用?怎么解决?
    6. `include` 和 `import` 作用是什么?它们有什么区别?
    7. 介绍一下 `KVC` 和 `KVO` 及其实现原理
    8. 介绍一下 OC 的消息传递机制
    9. 介绍一下 OC 的消息转发机制
    10. OC 支持多继承吗?如何实现 OC 的多继承?
    11. OC 支持方法重载吗?
    12. `CALayer` 有哪三种树?
    13. 什么是隐式动画?如何关闭隐式动画?
    14. 介绍一下 `block` 及其实现原理
    15. 如何在`block` 内部修改外部变量?
    16. `block` 种类有哪些? `block`  为什么要用 `copy` 修饰?
    17. `autoReleasePool` 的原理是什么?
    18. `ARC` 和 `MRC` 的区别是什么?
    19. 介绍一下引用计数。一个对象什么时候其引用计数才会变为 0?
    20. 主线程和子线程的区别?为什么刷新 UI 要放到主线程?
    21. 介绍一下多线程。实现多线程有哪几种方式?
    22. 介绍一下 `runtime` 机制。`runtime` 在日常开发中都有哪些用途?
    23. 介绍一下 `runloop`。日常开发中怎么使用的?
    24. `cell` 的复用机制及原理,如何自己设计一个 `cell` 复用池?
    25. `UITableView` 如何优化?优化的 9 个建议
    26. 如何扩大一个按钮的点击区域?
    27. `OC` 的 `category` 和 `extension` 的区别
    28. 如何设计一下网络库?
    29. 介绍一下 `MVC` 、`MVVM` 和 MVP, 以及它们之间的区别
    30. 介绍一下 OC 中的类簇
    31. `CoreAnimation` 在渲染过程中做了什么?
    32. 说一下线程和 `runloop` 的关系
    33. 日常开发中用到过哪些三方库?有看过三方库的源码吗?一些知名的三方库实现原理。
    34. 手写一个单例
    35. `Hybrid` 与原生交互原理(过程)
    36. 卡顿监控方案
    37. 如何解决在使用 `NSTimer` 或 `CADisplayLink` 过程中的内存泄漏问题?
    38. 做过组件化吗?组件化的方案有哪几种?
    39. 原子锁和非原子锁 (atomic 和 nonatomic)
    40. 日常中用到的锁有哪些?
    41. iOS 中内省的几个方法?class方法和objc_getClass方法有什么区别?
    42. [self class] 与 [super class] 分别打印出来什么?如何获取当前类的父类?
    43. self.name = object 与 _name = object 之间有何区别?在对象的 init 方法中赋值时应该使用上述二者中的哪一种及原因?
    44. 如何判断两个对象是否相等?
    45. weak 的实现原理
    46. load 和 initialize 方法的区别及它们之间的加载顺序
    47. 介绍一下 `OC` 的响应链
    48. `category` 加载时机及加载顺序
    49. `WKWebbiew` 白屏问题
    50. 数据持久化的方案都有哪些(数据库是重点)
    51. KVO,Notification, delegate 的优缺点,效率及使用场景
    52. 如何监控一个页面持有的对象是否有内存泄漏问题?
    53. 有看过 `OC` 底层源码?介绍一下你熟悉的
    

    swift

    0. `swift` 相比 `OC` 有什么优点?
    1. `swift` 的语言有哪些特点?
    2. 介绍一下函数式编程
    3. `swift` 为什么不支持静态库?
    4. `swift` 的 `extension` 和 `category` 的区别? 以及它们与 `OC` 的区别?
    5. `swift` 有哪些新的语言特性?
    6. 介绍一下 `swift` 的泛型
    

    由于 swift 当前不愠不火的状态,很多面试官都不会将其作为面试的重点。swift 5 出来之后,我发现很多开发开始慢慢的转 swift 开发,所以后续这块面试题还会持续补充。这里贴一个卓大佬卓同学的 Swift 面试题。这里是另一个大佬的 答卓同学的 Swift 面试题

    网络

    0. 说一下`三次握手`和`四次挥手`
    1. 说一下 `TCP` 和 `UDP` 的区别?
    2. 说一下 `HTTP` 和 `HTTPs` 的区别?
    3. `SSL/TSL` 的过程是怎样的?
    4. 网络都分为哪几层?作用分别是什么?
    5. 常见的 `HTTP` 状态值及释义
    6. 什么是 `socket` 编程?什么是 `websocket`?什么是心跳?
    7. 说一下 `HTTP` 的请求报文和响应报文的格式
    8. 简述 https 协议是如何保证客户端与服务器之间进行安全通信的?为了保证通信不被窃听,客户端应该朋采取什么措施?
    9. `GET` 与 `POST` 方法区别?
    10. `HTTP` 常用的请求头都有哪些?
    

    编译原理

    0. `iOS` 在 `pre-main` 阶段都做了些什么
    1. 编译的过程是怎样的?
    2. `clang` 接触过吗?介绍一下 `clang`
    3. `OC` 的 `pre-main` 阶段都做了哪些事情?
    4. 链接的过程都做了哪些事情?
    5. `OC` 的内存区块都有哪些?
    

    算法

    0. 算法时间复杂度是指什么?
    1. `B` 树,`B+` 树,`B*` 树的区别是什么?什么是红黑树?
    2. `C` 语言中都有哪些数据结构?
    3. hash 表是怎样实现的?
    4. 使用递归判断回文。如 level 就是一个回文
    5. 反转链表
    6. 判断镜像二叉树
    7. 求一个二叉树的度
    8. 快速排序,冒泡排序,插入排序
    9. `LRU` 算法
    10. 两个栈实现一个队列
    

    设计模式

    0. `23` 种设计模式熟悉一下
    1. 设计模式有哪 `6` 大设计原则?
    2. 简单工厂模式,工厂模式,抽象工厂模式
    3. 中介者模式
    4. 外观模式
    5. 观察者模式
    

    其它

    0. 谈谈你对架构的理解
    1. 在开发过程中要注意哪些安全问题
    2. 有哪些常用的加密算法?
    3. 介绍一下进程和线程,以及它们之间的区别与联系
    4. 介绍一下堆和栈
    5. 介绍一下进程间通信
    6. 你的职业规划是什么?
    7. `pod install` 和 `pod update` 的区别
    8. 开放问题。比如 `1+1` 什么情况下等于 3 
    9. 平常是如何进行学习的?
    

    唠会

    • 关于公司

    公司有大小,有好有坏,跟人一样一样的!

    投简历时,能不海投就不要海投。投之前最好看一眼。你的时间有限,精力有限,把有限的资源用到你觉得自己的能力能匹配得上且感兴趣的公司。一旦得到面试机会,尽量不要紧张,会影响发挥。战略上重视,战术上藐视,大胆放心去面就是。回来之后
    一定要认真总结
    一定要认真总结
    一定要认真总结

    • 关于面试官

    会问问题是一种能力?面试过程中,可能会碰到一些不会问问题的面试官,结果会导致你的回答会偏离问题。处于弱势地位的被面试者的你,就会在面试官的心中减分,虽然这很冤!不过大佬不是说过吗?男人的胸怀是被冤枉撑大的!你的胸怀又大了一点,你是不是应该高兴!!!🤣

    面试官奇葩的比较多,这里就不点名了!
    除此这外,应该感谢你们 撑大了我小小的胸怀 😤

    • 关于被面试者

    心态,心态,还是 TMD 的心态 !

    为什么打仗前要进行战争动员?因为动员做的好,士兵们就会同仇敌忾,就会迎着子弹往前冲,就会不怕牺牲。以一种不要命的心态往前冲,想输都难!

    现在的用人单位面试是要求起来越没上限了,有时候你答的好也不见得能得到 offer,有时候还要看缘份。而且缘份这东西急不来,说不定你哪次无心插柳就柳成荫了!

    我还想说:心态,心态,还是 TMD 的心态 !心态很重要!

    老铁们,学习的路上,一起共勉!

    7 月底了,阳光火热,万物繁茂,正是适合搞事情的季节!
    旅游或学习,选一个吧!不过我选择开着空调睡觉,上班太 TM 累了 ! 😤

    相关文章

      网友评论

        本文标题:iOS 面试题干货(二)

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