iOS技能,这些大厂硬核面试题你会了嘛?

iOS面试题

点赞再看,养成习惯,
欢迎大家关注我面试小专栏 : iOS中高级进阶之路 有我准备的一线大厂面试资料和简历模板,欢迎Star!

面试题
  1. 详细描述一下 UIView 与 CALayer 的关系,drawRect 一定会影响性能吗?UI Dynamics 与 UIKit Animation 的最本质区别是什么?
  2. 如何用 UIImageView 显示超大分辨率的图?如果要支持缩放呢?
  3. 了解 fishhook 吗?说说为什么 fishhook 不能修改非动态连接库中的符号?
  4. C++ 调用虚方法与 Objective-C 发消息有什么区别?
  5. 了解 placement new 吗?Objective-C 中如何实现这个功能?
  6. 如何在 ARC 环境下用 C++ 标准库容器来管理 Objective-C 对象?
  7. id、self、super 它们从语法上有什么区别?
  8. isa 是什么?是指向 Class 对象本身的指针吗?
  9. block 修改捕获变量除了用 __block 还可以怎么做?有哪些局限性?
  10. NSDictionary 与 NSHashTable 有什么区别,它们的使用场景是怎样的?
  11. 用过 Swift 吗?如何评价 String index 的设计?
  12. 假设 iPhone 上有一个与服务器的 TCP 连接,此时 iPhone 忽然断网,服务器能在短时间内知会 iPhone 的离线吗?
  13. 为什么 Wireshark 不能直接抓取 SSL 的原始数据?
  14. backtrace 是在用户态实现的吗?能否讲讲实现它的大致思路?
  15. malloc 的指针 double free 产生的异常与访问 freed 指针有可能产生的异常有什么区别?为什么访问 freed 指针不一定产生异常?
  16. RunLoop 是一个不停歇在运行的死循环吗?为什么?
  17. 看过 runtime 的源码吗?源码中常有的 fastpath、slowpath 是什么?
  18. runtime 中 SideTables(不是 SideTable)存在的意义是什么?
  19. 为什么 ARC 环境下不允许我们调用 [super dealloc]?
  20. Objective-C 是如何保证系统升级后的 ABI 稳定性的?
    下面这段伪代码存在什么问题?应该如何改进?
int main(int argc, const char * argv[]) {
    // ...

    NSUInteger threadCount = [NSProcessInfo processInfo].activeProcessorCount;
    NSCondition *cond = [NSCondition new];
    for (int i = 0; i < threadCount; i++) {
        [NSThread detachNewThreadWithBlock:^{
            while (YES) {
                [cond lock];
                while (/* Queue is empty */) {
                    [cond wait];
                }
                // Dequeue an item
                [cond unlock];
                // Handle the item
            }
        }];
    }

    while (YES) {
        // Enqueue something when it comes
        [cond broadcast];
    }

    // ...
}
关于算法相关题

要求写出可编译代码

  1. 翻转k个链表 (写代码)
  2. 实现堆排序
  3. 进程和线程的区别
  4. 二叉树的中序遍历,非递归
  5. 如何拷贝一个包含随机指针的链表 (描述思路)
  6. 程序在运行时操作系统除了分配内存空间还有什么
  7. 存一个通讯录,包括增删改查,用什么数据结构?
  8. .二叉树的中序遍历,非递归?
  9. 你使用RN的时候有遇到什么问题?什么地方导致RN性能瓶颈?
  10. 给定一个数组,其中有一个数只出现一次,其他数都出现两次,找到只出现一次的那个数。
  11. 给定一个数组array,其中array[i] != array[i+1],找到任何一个i,满足array[i] > array[i-1] 且 array[i] > array[i+1]。假设array[-1] == array[n] == 负无穷。要求O(logN)时间复杂度。
交叉面试

1、介绍项目,主要介绍自己强项一点的地方
2.追问:还有吗?
3、数组cop后里面的元素会复制一份新的吗
4、数组的浅拷贝与深拷贝
5、TCP为什么是三次握手和四次挥手
..............
............

问题还是很多很多的,日后我可能也会写一篇文章来解答一下所有的问题,当然我更希望大家能够自己完成这些问题,不要尝试直接搜答案,很多题也许根本搜不到答案,所以自己探究的过程一定是必不可少的,加油吧!

推荐

  1. 直击2020——iOS 面试题大全(补充完整版)
  2. “新”携程,阿里,腾讯iOS面试常见问题合集(附答案)
  3. 我是如何同时拿到阿里和腾讯offer的
结交人脉

你可能感兴趣的:(iOS技能,这些大厂硬核面试题你会了嘛?)