美文网首页面试相关
iOS开发提升季,这些大厂硬核面试题你会了嘛?

iOS开发提升季,这些大厂硬核面试题你会了嘛?

作者: 一意孤行的程序猿 | 来源:发表于2020-07-20 15:31 被阅读0次

    对于每个准备找工作或者已经找到工作的人来说,准备面试题都是一次提升自己的机会。但比较庆幸的是,本人几次面试所遇到的问题都比较简单,没有太多能让自己有所提升的内容,而网上流传的各种面试题如今看来也没有什么太大的新意。因此我决定自己出一份面试题,真正有一点难度的面试题。

    涵盖的知识体系

    • UIKit 相关的基础知识
    • C++ 以及与 Objective-C 的互操作性(没有接触过 C++ 的小伙伴可以暂时跳过这部分题目)
    • 程序链接与装载相关知识
    • Swift
    • Objective-C runtime
    • 计算机网络(基础)
    • 操作系统(基础)

    面试题

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

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

    结交人脉

    作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:789143298 ,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

    相关文章

      网友评论

        本文标题:iOS开发提升季,这些大厂硬核面试题你会了嘛?

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