美文网首页iOS进阶干货分享编程类图书馆iOS Developer
一个iOS中高级面试官分享的招聘需求!

一个iOS中高级面试官分享的招聘需求!

作者: _小迷糊_997 | 来源:发表于2019-10-08 21:20 被阅读0次

    金秋时节,互联网招聘高潮再次来临,我相信很多做iOS开发的朋友,想要跳槽,却还在迷茫和胆怯!随着国内市场对于iOS开发者越来越高的技术要求,多年来,积累的UI开发、代码搬运经验在这个时候显然并不能“帮”上什么忙,不过,这丝毫不会影响我疯狂往外投简历的心情,毕竟我最好的朋友是谷歌!

    OK,抛开题外话,今天主要是想要给大家分享一些在所谓的中高级iOS工程师面试过程中,出现概率极大的一部分底层面试内容,多做准备总不会有错!

    • iOS基础
    • Runtime相关
    • 网络&多线程
    • 数据结构&算法
    • 架构设计
    • 性能优化

    iOS基础

    • 1:讲讲你对atomic & nonatomic的理解
    • 2:被 weak 修饰的对象在被释放的时候会发生什么?是如何实现的?知道sideTable 么?里面的结构可以画出来么?
    • 3:block 用什么修饰?strong 可以?
    • 4:block 为什么能够捕获外界变量? __block做了什么事?
    • 5:谈谈你对事件的传递链和响应链的理解 (这个面试题,如果求职者能够回答一些实际开发相关的处理,不只是简单的概念,予以加分)
    • 6:谈谈 KVC 以及 KVO 的理解?
    • 7:RunLoop 的作用是什么?它的内部工作机制了解么?
    • 8:苹果是如何实现 autoreleasepool的?
    • 9:谈谈你对 FRP (函数响应式) 的理解,延伸一下 RxSwift 或者 RAC
    • 10:平时开发有没有玩过 Instrument

    分析:这里的内容非常有意思,对于一个iOS高级开发人员,我觉得还有很有必要掌握的!尤其开发3-5年,如果没有掌握这些内容我觉得是不合格的

    在一些合适的地方可以进行延伸!

    • 第二题,第一问是关于 weak 这个面试是非常经典的,只要是个iOS开发都能回答一点。但是后面部分就需要自身的学习能力了!
    • 第三题和第四题,侧击一下 MRC 一个资深4-5年开发经验或多或少都应该要知道一些 MRC 相关的知识!更多的就是个人的探索能力了
    • 第五题和第六题:回答一些实际开发相关以及文档能力应该会是加分项
    • 第七题、第八题、第九题以及第十题都是可以拓展更多内容的!

    Runtime

    • 1:什么是 isaisa 的作用是什么?
    • 2:一个实例对象的isa 指向什么?类对象指向什么?元类isa 指向什么?
    • 3:objc 中类方法和实例方法有什么本质区别和联系?
    • 4:loadinitialize 的去呗?
    • 5:_objc_msgForward 函数是做什么的?直接调用会发生什么问题?
    • 6:简述下 Objective-C 中调用方法的过程
    • 7:能否想向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
    • 8:谈谈你对切面编程的理解

    分析:Runtime 这个模块iOS面试无论初中高都会面试。这个模块一般都只是仅仅问问关于知识点的内容,但是更多的爬坑探索精力是你展现个人学习能力和求知心的好时刻!

    网络&多线程

    • 1:HTTP的缺陷是什么?
    • 2:谈谈三次握手,四次挥手!为什么是三次握手,四次挥手?
    • 3:socket 连接和 Http 连接的区别
    • 4:什么时候POP网路,有了 Alamofire 封装网络 URLSession为什么还要用Moya
    • 5:如何实现 dispatch_once
    • 6:能否写一个读写锁?谈谈具体的分析
    • 7:什么时候会出现死锁?如何避免?
    • 8:有哪几种锁?各自的原理?它们之间的区别是什么?最好可以结合使用场景来说

    分析:这个模块,估计是大部分开发人员的盲区,面试官当然知道这个情况,所以你可以知道一点点,但不能完全达不上来,当然达上来,离你的Offer就会更近一步!

    数据结构

    • 1.数据结构的存储一般常用的有几种?各有什么特点?
    • 2.集合结构 线性结构 树形结构 图形结构
    • 3.单向链表 双向链表 循环链表
    • 4.数组和链表区别
    • 5.堆、栈和队列
    • 6.输入一棵二叉树的根结点,求该树的深度?
    • 7.输入一课二叉树的根结点,判断该树是不是平衡二叉树?

    算法

    • 1.时间复杂度
    • 2.空间复杂度
    • 3.常用的排序算法
    • 4.字符串反转
    • 5.链表反转(头差法)
    • 6.有序数组合并
    • 7.查找第一个只出现一次的字符(Hash查找)
    • 8.查找两个子视图的共同父视图
    • 9.无序数组中的中位数(快排思想)
    • 10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

    分析:这个模块是绝大部分开发人员的软肋!面试官测试你的思维逻辑能力就在这一块了!应该很少会有面试官直接让求职者手写,毕竟在当时的环境来说,挑战性非常大!当然,这种“变态”行为也不一定没有,这个时候就得看你的个人思维了!

    架构设计

    • 1:设计模式是为了解决什么问题的?
    • 2:看过哪些第三方框架的源码,它们是怎么设计的?
    • 3:可以说几个重构的技巧么?你觉得重构适合什么时候来做?
    • 4:开发中常用架构设计模式你怎么选型?
    • 5:你是如何组件化解耦的?

    分析:架构设计这一层对于一个iOS中高级开发人员来说。这一块那是他必须要去思考和感受总结的!如果开发经验4-5年,一直做着应用层开发,那你本身就已经落后市场了!

    性能优化

    • 1:tableView 有什么好的性能优化方案?
    • 2: 界面卡顿和检测你都是怎么处理?
    • 3:谈谈你对离屏渲染的理解?
    • 4:如何降低APP包的大小
    • 5:日常如何检查内存泄露?
    • 6:APP启动时间应从哪些方面优化?

    分析:现在APP性能优化以及成为iOS中高级开发人员必须要去关系的东西!但是没有实际开发能力的性能优化都只是纸上谈兵!

    最后:

    一个优秀的iOS中高级开发 = iOS技术 + 学习能力 + 态度,这并不是在你现实中面试必会出现的,高考押题,有备无患!你的学习能力和态度才是面试官最想看到的!

    给大家推荐一个 3000人 iOS开发者QQ交流群:551346706 ,进阶、吹水、内推做一个有梦想的iOS开发者!还有群主整理的面试题、学习资料免费下载!

    相关文章

      网友评论

        本文标题:一个iOS中高级面试官分享的招聘需求!

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