那些 BAT 的面试官,都是怎样面试 iOS开发者的?

简介: 前言: 金秋九月,互联网招聘高潮已经来临!相信作为面试官的你,估计开始准备招聘要求或者已经在招聘了!这一篇文章主要想和各位面试官交流一下:我们应该制定一份什么样的招聘要求,才是比较合适的?(* ̄︶ ̄) iOS面试需要注意 1:面试态度 我们在招聘的时候,面试官经常会犯一个问题:各种碾压求职者! 我.

前言:

金秋九月,互联网招聘高潮已经来临!相信作为面试官的你,估计开始准备招聘要求或者已经在招聘了!这一篇文章主要想和各位面试官交流一下:我们应该制定一份什么样的招聘要求,才是比较合适的?(* ̄︶ ̄)

iOS面试需要注意

1:面试态度

我们在招聘的时候,面试官经常会犯一个问题:各种碾压求职者!

我不知道你招聘这一天发生了什么事情,心情好不好?但是我希望当你去面试的求职者的时候,保持愉悦,给予面试者应该的 -- 善意!

你面试代表你的公司,你的言行举止都直接影响外界对贵公司的感受

同时作为一个管理者的你,成功和愉悦的面试过程也应该是你此刻最希望的!

可能现在他还只是求职者,但是兴许过段时间就是你工位旁边的同事!此刻的善意对你后面愉悦的工作的环境大有裨益!

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

如果他无法成为你的同事,大可不必为此纠结,茫茫人海,你此刻的善意,未来在某一刻必定能够兑换!

当然也会有让你不高兴的求职者,那么就让他去吧!茫茫人海,江湖再见,兴许还能微笑而过!

2:面试题注意事项

我们很多iOS面试官在招聘的时候,很多都是直接在网上找一份iOS面试题就开始面试了!(偷懒)而我觉得这是一个很错误的做法。网上很多面试题的确不错,但是这样招聘过来的iOS开发人员不一定是非常优秀的,可能是背的面试题,也可能是贵公司的面试题泄漏,导致iOS求职者表现非常好!

1:面试题可以网上获取,但是我希望面试官认真对待,希望能够结合你们的公司实际开发,落地到面试题 (这样也就避免人家吐槽,面试造,开发拧)

2:面试题可以适当变动。根据求职者的简历情况,来变动面试题!有的简历不错的,可以适当调难一些。刚好在你的招聘及格线的求职者可以适当降低要求(毕竟要去不一样,后面薪资以及培养方向也会不一样)

3:根据贵公司的状况也考虑:要不要笔试!笔试无好坏,只是一轮刷选,能够帮你适当刷掉一部分不符合你要求的iOS开发人员!但是贵公司招聘情况很不理想,我觉得可以反思:是不是笔试太难,笔试题目过多...

3:面试流程

我个人比较反感的是:招聘岗位很少,却叫去很多面试者面试!这个是一种比较严重不尊重求职的一种行为!其实也是对你的一种损失 联系过多面试者来面试,这样的做法你既浪费了求职者的时间,同时也会造成面试成本飙升

希望面试官拿到简历,请你快速刷选出你合适中意的简历,然后分批安排面试! 对你中意的iOS 高级求职者!我希望能够多几次面试流程。一个真正的iOS高级开发对于公司来说非常重要,希望通过几个流程由不同的岗位 leader 写出评分,综合考虑, 切记盲目 同时这样正规的流程也能让求职者感受到贵公司的重视,以及入职以后的对于工作的重视!

iOS 高级面试内容

可能众多面试官还是比较关心面试内容,我这里从

iOS基础

Runtime相关

网络&多线程

数据结构&算法

架构设计

性能优化

等这些方面,给各位面试官准备了一些题,希望能够帮助到你

iOS基础

1:讲讲你对noatomic & 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:什么是 isa,isa 的作用是什么?

2:一个实例对象的isa 指向什么?类对象指向什么?元类isa 指向什么?

3:objc 中类方法和实例方法有什么本质区别和联系?

4:load 和 initialize 的去呗?

5:_objc_msgForward 函数是做什么的?直接调用会发生什么问题?

6:简述下 Objective-C 中调用方法的过程

7:能否想向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?

8:谈谈你对切面编程的理解

分析:Runtime 这个模块iOS面试无论初中高都会面试。我觉得这个模块不光只是仅仅问问关于知识点内容,我更新想要听到求职者在这里面的爬坑探索辛历路程!

网络&多线程

1:HTTP的缺陷是什么?

2:谈谈三次握手,四次挥手!为什么是三次握手,四次挥手?

3:socket 连接和 Http 连接的区别

4:HTTPS,安全层除了SSL还有,最新的? 参数握手时首先客户端要发什么额外参数

5:HTTPS是什么?握手过程,SSL原理,非对称加密了解多少

6:什么时候POP网路,有了 Alamofire 封装网络 URLSession为什么还要用Moya ?

7:如何实现 dispatch_once

8:能否写一个读写锁?谈谈具体的分析

9:什么时候会出现死锁?如何避免?

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

分析:这个模块可能是一般开发人员的盲区。因为一般开发真心没必要去操心这么多!面试官你们可以挑去拷问就OK,面试过程中不能对答如流也是正常!当然如果能够回答上来应该加分!

数据结构

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技术 + 学习能力 + 态度 其中态度和学习能力也是我在面试别人过程中非常看重的!哪怕你技术目前很差,但是你有谦虚诚恳的态度,优秀的学习能力。我也愿意带你!

非常感谢你阅读到了这里!前面都是本人的建议,具体你的实施还是需要你根据情况调整!预祝你收获一个优秀的同事!

相关文章
|
1月前
|
Android开发 Swift iOS开发
iOS和安卓作为主流操作系统,开发者需了解两者差异以提高效率并确保优质用户体验。
【10月更文挑战第1天】随着移动互联网的发展,智能手机成为生活必需品,iOS和安卓作为主流操作系统,各有庞大的用户群。开发者需了解两者差异以提高效率并确保优质用户体验。iOS使用Swift或Objective-C开发,强调简洁直观的设计;安卓则采用Java或Kotlin,注重层次与动画。Swift和Kotlin均有现代编程特性。此外,iOS设备更易优化,而安卓需考虑更多兼容性问题。iOS应用仅能通过App Store发布,审核严格;安卓除Google Play外还可通过第三方市场发布,审核较宽松。开发者应根据需求选择合适平台,提供最佳应用体验。
58 3
|
5月前
|
IDE Android开发 iOS开发
Android VS iOS:哪个操作系统更适合开发者?**
**在移动应用开发领域,Android和iOS是两大主流操作系统,它们各自拥有独特的特点和优势。本文探讨了Android和iOS操作系统在开发者视角下的差异与优劣,分析了它们在开发环境、用户群体、市场前景等方面的比较,帮助开发者选择最适合他们需求的平台。
87 2
|
1月前
|
IDE Android开发 iOS开发
探索安卓与iOS系统的技术差异:开发者的视角
本文深入分析了安卓(Android)与苹果iOS两大移动操作系统在技术架构、开发环境、用户体验和市场策略方面的主要差异。通过对比这两种系统的不同特点,旨在为移动应用开发者提供有价值的见解,帮助他们在不同平台上做出更明智的开发决策。
|
2月前
|
IDE Java Android开发
安卓与iOS开发环境的差异及其对开发者的影响
在数字时代的浪潮中,移动应用成为人们生活的延伸。两大操作系统——安卓与iOS,如同两座技术高峰,各自占据着半壁江山。本文将探索这两个平台的开发环境差异,并讨论这些差异如何塑造开发者的编程习惯与职业选择。我们将从工具和语言、用户界面设计、系统架构、市场定位以及开发社区和资源五个方面进行比较,旨在为开发者提供一份实用的指南,帮助他们在不断变化的技术世界中,找到适合自己的发展路径。
55 3
|
2月前
|
移动开发 开发工具 Android开发
安卓与iOS开发:平台差异及其对开发者的影响
在移动开发的大潮中,安卓和iOS两大阵营各领风骚。本文将探讨这两个平台的关键差异,包括开发环境、编程语言、用户界面设计、应用分发以及商业模式等方面。通过比较分析,我们旨在为开发者提供一个清晰的指导,帮助他们根据项目需求和个人偏好做出明智的平台选择。同时,文章也将分享一些跨平台开发工具的使用经验,以期最大化开发效率和市场覆盖。
69 1
|
3月前
|
开发工具 Android开发 iOS开发
安卓与iOS开发环境的差异及其对开发者的影响
【8月更文挑战第22天】在移动开发的广阔舞台上,安卓与iOS两大操作系统各自占据着半壁江山。它们不仅是用户手中的智能设备,更是开发者展示创意和技术的战场。本文将深入探讨这两个平台的开发环境差异,以及这些差异如何塑造开发者的技术路线和职业生涯。从编程语言到开发工具,从市场定位到用户需求,我们将一探究竟,这两种不同的生态系统是如何影响开发者的决策和成长的。
|
3月前
|
Java 开发工具 Android开发
安卓与iOS开发环境的差异及其对开发者的影响
【8月更文挑战第21天】在移动应用开发的广阔天地中,安卓和iOS两大平台各据一方,它们不仅在用户体验上有所区别,更在开发环境上展现出独特的风貌。本文将深入探讨这两大平台的开发环境差异,以及这些差异如何塑造开发者的技术路径和职业生涯。从工具和语言的选择到市场份额的争夺,我们将一一剖析,以期为即将踏入这一领域的新手开发者提供一盏明灯。
|
3月前
|
API 开发工具 Android开发
探索Android与iOS开发环境的差异及对开发者的影响
【8月更文挑战第10天】在移动应用开发的广阔天地中,Android和iOS作为两大主要平台,各自拥有独特的开发环境和生态系统。本文将深入探讨这两个平台的开发环境差异,以及这些差异如何影响开发者的工作效率、应用性能和最终用户体验。通过比较两者的开发工具、编程语言和API等方面,我们将揭示平台选择对项目成功的重要性,并为开发者提供在选择平台时的参考依据。
|
3月前
|
iOS开发 Android开发 MacOS
从零到全能开发者:解锁Uno Platform,一键跨越多平台应用开发的神奇之旅,让你的代码飞遍Windows、iOS、Android、macOS及Web,技术小白也能秒变跨平台大神!
【8月更文挑战第31天】从零开始,踏上使用Uno Platform开发跨平台应用的旅程。只需编写一次代码,即可轻松部署到Windows、iOS、macOS、Android及Web(通过WASM)等多个平台。Uno Platform为.NET生态带来前所未有的灵活性和效率,简化跨平台开发。首先确保安装了Visual Studio或VS Code及.NET SDK,然后选择合适的项目模板创建新项目。项目结构类似传统.NET MAUI或WPF项目,包含核心NuGet包。通过简单的按钮示例,你可以快速上手并构建应用。Uno Platform让你的技术探索之旅充满无限可能。
68 0
|
3月前
|
开发框架 Java Android开发
安卓与iOS开发环境的差异及其对开发者的影响
在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据半壁江山。它们不仅在用户界面、操作系统架构上有所区别,更在开发环境和工具上展现出独特的差异。本文将从开发语言、工具和库、以及跨平台开发框架三个方面深入探讨这些差异如何塑造开发者的技术选择和职业路径,进而影响移动应用的生态发展。
31 2