2020年本应该是一个 "爱你、爱你"的年份!却因为 黑天鹅 给我们带来非常大的影响!

一、2020年iOS招聘数据分析

这里是 2020年3月份BOSS直聘 北京iOS招聘前几页数据

薪资待遇 岗位个数 年限要求 公司规模
15K左右 35份 1-3年 20-99
20K左右 78份 3-5年 100-499
30K左右 63份 3-5年 100-499-1000以上
30K以上 66份 5年以上 499-1000以上

下面是2019年10月份我统计的数据

薪资待遇 岗位个数 年限要求 公司规模
15K左右 40份 1-3年 20-99
20K左右 63份 3-5年 100-499
30K左右 93份 3-5年 100-499-1000以上
30K以上 33份 3-5-以上 499-1000以上

我做了一个图标以供大家参考(查看直观)

 
  • 15K左右 开发岗位的确有所下降;
  • 但是 20K左右 岗位却上升了不上;
  • 受 黑天鹅 影响 30K左右 下降了不少;
  • 30K以上 这个岗位有所上升,这里数据不准确,因为我是知道的,在BOSS上面为提供知名度,肯定会有所假数据的,这一点我相信大家也心知肚明!
  • 毕竟行业在进步,以及物价在上升,大家工作也是必然要上涨的!
 
  • 底层原理毫无疑问还是iOS开发现在必备能力。

    • 对象底层原理
    • 指针与内存的一些相关面试
    • weak 弱引用
    • block 的原理
    • AutoreleasePool 原理
    • Runloop 的原理
    • Runtime相关、消息转发
    • ....
  • 性能优化以及架构能力相对比之前要求越来越多!

    • ①性能优化方面:tableView的优化 -> 界面卡顿原理 -> app 性能分析 -> 项目优化
    • ②架构方面: 设计模式、解耦手段、组件化....
  • 多线程、网络能力也是占有一个非常大的比例 !

    • 多线程的原理
    • 线程池
    • GCD
    • 锁相关原理
    • 线程生命周期
    • 网络设计
    • 网络框架的一些理解
    • 开发过程中一些需求结合多线程或者网络设计!
  • 数据结构算法能力占比也比较大。通常一般大公司都会有一些笔试:虽然不在核心岗位对于数据结构算法要求不是非常严格,但是也会有一些常规的数据结构和算法的题

    • 排序
    • 数据结构设计
    • 复杂度讨论
    • 一些脑经急转弯的算法题
    • .....
  • 跨平台能力要求多了!比如腾讯很明显就要求 Flutter 开发能力 (毕竟2019年 Flutter 太火了!)

估计大家看到这里,也是内心OA: 面试是造航母啊!哈哈哈...

 

二、现在iOS都在问什么

下面我总结2020某些大厂以及小公司的面试题!

2.1、iOS 基础题

1,分类和扩展有什么区别?可以分别用来做什么?分类有哪些局限性?分类的结构体里面有哪些成员?

2,讲一下atomic的实现机制;为什么不能保证绝对的线程安全(最好可以结合场景来说)?

3,被weak修饰的对象在被释放的时候会发生什么?是如何实现的?知道sideTable么?里面的结构可以画出来么?

4,Autoreleasepool 所使用的数据结构是什么? AutoreleasePoolPage 结构体了解么?

5,讲一下对象,类对象,元类,跟元类结构体的组成以及他们是如何相关联的?为什么对象方法没有保存的对象结构体里,而是保存在类对象的结构体里?

6,iOS 中内省的几个方法? class 方法和 objc_getClass 方法有什么区别?

7,RunLoop的作用是什么?它的内部工作机制了解么?(最好结合线程和内存管理来说)

8,哪些场景可以触发离屏渲染?(知道多少说多少)

2.2、iOS 实战题

1,有哪些场景是NSOperation比GCD更容易实现的?(或是NSOperation优于GCD的几点,知道多少说多少)

2,App 启动优化策略?最好结合启动流程来说(main()函数的执行前后都分别说一下,知道多少说多少)

3,App 无痕埋点的思路了解么?你认为理想的无痕埋点系统应该具备哪些特点?(知道多少说多少)

4,你知道有哪些情况会导致app崩溃,分别可以用什么方法拦截并化解?(知道多少说多少)

5,你知道有哪些情况会导致app卡顿,分别可以用什么方法来避免?(知道多少说多少)
复制代码

2.3、网络题

1,App 网络层有哪些优化策略?

2,TCP为什么要三次握手,四次挥手?

3,HTTPS的握手流程?为什么密钥的传递需要使用非对称加密?双向认证了解么?

4,HTTPS是如何实现验证身份和验证完整性的?

5,如何用Charles抓HTTPS的包?其中原理和流程是什么?

2.4、计算机系统题

1,了解编译的过程么?分为哪几个步骤?

2,静态链接了解么?静态库和动态库的区别?

3,static和const有什么区别?

4,什么时候会出现死锁?如何避免?

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

2.5、设计模式题

1,除了单例,观察者设计模式以外,还知道哪些设计模式?分别介绍一下

2,iOS SDK 里面有哪些设计模式的实践?

3,设计模式的成员构成以及工作机制是什么?

2.6、架构 & 设计题

1,MVC和MVVM的区别?MVVM和MVP的区别?

2,面向对象的几个设计原则了解么?最好可以结合场景来说。

3,可以说几个重构的技巧么?你觉得重构适合什么时候来做?

4,你觉得框架和设计模式的区别是什么?

5,看过哪些第三方框架的源码,它们是怎么设计的?设计好的地方在哪里,不好的地方在哪里,如何改进?(这道题的后三个问题的难度已经很高了,如果不是太N的公司不建议深究)

2.7、数据结构&算法题

1,链表和数组的区别是什么?插入和查询的时间复杂度分别是多少?

2,哈希表是如何实现的?如何解决地址冲突?

3,排序题:冒泡排序,选择排序,插入排序,快速排序(二路,三路)能写出那些?

4,链表题:如何检测链表中是否有环?如何删除链表中等于某个值的所有节点?

5,数组题:如何在有序数组中找出和等于给定值的两个元素?如何合并两个有序的数组之后保持有序?

6,二叉树题:如何反转二叉树?如何验证两个二叉树是完全相等的?
复制代码

三、iOS开发者我们该如何破冰!

 
 ⚠️此时此刻,我只想强调一件事:⚠️

多年的应用层开发经验不足以应付现在的iOS市场!

多年的应用层开发经验不足以应付现在的iOS市场!

多年的应用层开发经验不足以应付现在的iOS市场!
复制代码

3.1 iOS的囧状

在本人看来,现在最尴尬的就是iOS开发 3-5年 甚至5年以上的开发人员,比上不足,比下有余!

  • 开发这么多年经验了,薪资要求肯定不能满足现状,我相信大家都是极度渴望突破:20K 甚至 30K 坎~
  • 想去大厂,发现不光学历不行,就连最拿得出手的技术也只能屡屡受挫!
  • 自己平时工作,家庭都很忙,学习成了自己内心一闪而过的念头!
  • 开始学习,发现自己方向不够清晰,不知道自己应该学习什么!
  • 好不容易找到了方向,发现自己能难坚持下来!
  • 就算坚持了一段时间,发现好多问题无法攻克!
  • 终于学习了一段时间,发现还是面试被打击!
  • ☹️☹️☹️

3.2 学习的必要性

 

希望保持初心,继续往前面走!毕竟我们所从事的行业:IT行业.技术与行业必然是不断更新变化!虽然IT行业高薪,但是你也要看到这个行业内的淘汰率也是不容小觑的!

换句话说:人家面试题一天比一天难,难道你的技术要保持原地?

3.3 学习的方法

学习的方法千万条,进步第一条

  • 博客学习 : 我觉得这应该是我们最喜欢的方式!建议大家平时上班下班路上休闲时间就可以看看大牛的博客,文章!毕竟这些都是来自人家的总结探索分享,很具学习性!同时如果有条件的,不妨针对你学习的东西都能有所学习总结
  • 讲座-分享会:这个也是比较好的!能够第一时间吸取的技术的新潮流!
  • 看书:我个人也是比较喜欢看书的,虽然有点慢,但是每天书本的输入也成我现在汲取养分的一个重要渠道
  • 公司、团队分享会:能够满足现在公司业务技术拓展,还能看到自己周边人的学习状态!
  • 知识付费:现在信息爆炸,知识付费学习是目前最为潮流的方式,学习方式简单,成效快,知识比较系统!可能很多人都知道我本人比较喜欢得到,在得到平台经常吸取一些自己技术乃至职业方面的知识!

3.4 推荐学习方向

3.4.1:底层探索能力

很多人会讽刺:面试造航母,上班拧螺丝! 其实不然,面试的高要求对于一家优秀的iOS需求单位来说是必须的!

  • iOS开发实现的确有很多的方式,但是一个真正懂得原理的开发人员在日后的开发工作中是非常重要。我见过一些开发人员:遇到BUG都是直接面向百度,不知道为什么直接 command + c/command + V OK,解决了,打版走人,下次又遇到了还是要面向百度,其中浪费的时间和小伙伴之间的沟通成本可想而知!

  • 底层原理只是你在工作开发中偷懒而逃避选择使用而已(或者全然不太了解)

  • 技术不断更新,底层原理是永恒根基

  • 底层原理是非常重要的,只有真正掌握原理才能迎接未来无限可能。

下面是我推荐大家学习的内容:

 

OC 底层探索篇也是大家熟悉而又陌生的地方,平时处处用,就是不知道为什么!

3.4.2:性能优化以及架构能力

只要你面试要求 20-30K 必然要求性能优化能力!

  • 怎么优化启动速度,应用包的瘦身!

  • 界面优化(卡顿检测以及分析解决)

  • 内存管理方面也是面试以及平时开发的重灾区!

  • 架构并不属于性能优化,但是我要求每一个 3年以上开发 都要有一定的架构思维!

 

3.4.3:数据结构算法

 

数据结构算法应该是每一个程序员必备的根据。我记得我的导师跟我说过:一个程序员需要两样东西:智商和勤奋

  • 英文能力体现你的勤奋度

  • 数据结构算法反馈你的智商等级

数据结构与算法并不只是抽象的概念,掌握好的话可以写出更高效、运行得更快的代码,这对于如今盛行的网页和移动应用开发来说尤为重要。如果你最近一次使用算法是在大学课堂上或求职面试时,那你应该还没见识到它的真正威力!

这个主题的大多数资料都有一种通病——晦涩难懂。满纸的数学术语,我觉得一种有趣的学习方式也是非常重要的!

3.4.4:跨平台能力

跨平台的方案有很多:

 

如上表所示,RNWeex采用的技术方案大体相同,它们都使用JavaScript作为编程语言,然后通过中间层转换为原生的组件后再利用Native 渲染引擎执行渲染操作。而 Flutter 直接使用 skia来渲染视图,而Flutter Widget则使用现代响应式框架来构建,和平台没有直接的关系。

从性能方面来说,Flutter 的性能理论上是最好的,RNWeex次之,并且都好于传统的 WebView方案

而从社群和社区的活跃来看,RN和Flutter无疑是最活跃的

总结:我个人针对现在的行情比较推荐大家学习:Flutter

 
  • 同时现在很多人也开始着手学习了

  • 如何存托你的优势,我个人还要推荐在平时入门到项目的过程,不妨花点时间探索了一下背后的原理:渲染的流程,Flutter和原生的共存通讯优化

  • 下面这张思维导图大家可以参考学习

 

3.4.5:技术储备以及加分项

现在的iOS开发为什么会遇到瓶颈是因为:前面储备过少,坐吃山空! 技术不断更新的时代,我希望你沉下心来与时俱进,不断储备技能为自己加分

这里我推荐学习:视觉方向! 无论直播还是小视频,图形图像处理成为必然的技能,未来5G时代的来临,这一块技术必将成为你与其他开发人员差距的赛点!

 

同时也推荐大家学习:应用安全攻防方向 逆向安全这些年越来越被我们熟知并且需要!一个高质量安全的应用程序必将是你薪酬翻番的谈资!

五、总结

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

另附上一份各好友收集的大厂面试题,进群可自行下载!

 
 

 
 

iOS开发如何面对疫情过后的面试高峰期 !的更多相关文章

  1. iOS开发——面试指导

    iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. ...

  2. 100个iOS开发/设计程序员面试题汇总,你将如何作答?

    100个iOS开发/设计程序员面试题汇总,你将如何作答? 雪姬 2015-01-25 19:10:49 工作职场 评论(0)   无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目, ...

  3. 2019年,iOS开发的你不可或缺的进阶之路!

    序言 我相信很多人都在说,iOS行业不好了,iOS现在行情越来越难了,失业的人比找工作的人还要多.失业即相当于转行,跳槽即相当于降低自己的身价.那么做iOS开发的你,你是否在时刻准备着跳槽或者转行了. ...

  4. IOS开发入门你们准备好了吗?

    我们对于IOS的了解最多应该就是苹果手机独有的IOS系统吧,也可以说是单任务管理器,这可以说是一个优势,但是随着技术提升IOS慢慢有被超越的趋势,但是很多大公司还是需要这方面的开发人才,那么今天我们来 ...

  5. 硅谷和国内的 iOS 开发到底有何不同?

    前段时间在国内各大互联网公司转了一圈.与各位 iOS 业界大佬交流了之后,深感国内变化之大,敬佩诸位国内开发者的实力和韧劲.除此之外,我还发现硅谷和国内的 iOS 开发还是差别很大,且听我慢慢道来. ...

  6. iOS 开发常用的调试工具

    前言 最近博主临近毕业季,为了完美的写一篇毕业论文,真是:“锄禾日当午,汗滴禾下土”<—— 这句诗跟毕业我写毕业论文没任何一毛钱关系,我就是突然想吟湿了.不过博主作为网络工程专业的好青年,曾经的 ...

  7. 2020年,如何成为一名 iOS 开发高手!

    2020年对应程序员来说,是一个多灾的年份,很多公司都进行了不同比例的优化和裁员.等疫情得到控制后,将会是找工作的高峰期,从去年的面试经历来看,现在只会单纯写业务代码的人找工作特别难,很多大厂的面试官 ...

  8. 99%的Android开发不得不面对的三道坎,到底该怎么破?

    今年比往年要特殊一些,受疫情的影响,很多公司都出现了裁员现象.以至于最近很多技术同学也在纷纷向我倒苦水. 王鹏便是其中的一员,王鹏之前是在一线城市的一家小型互联网公司做Android应用开发.从毕业实 ...

  9. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

随机推荐

  1. virtualenv 个人指南

    virtualenv是解决一个机器上多个应用需要的Python版本不一致的问题,virtualenv就是用来为一个应用创建一套"隔离"的Python运行环境,解决了解决了不同应用间 ...

  2. loadrunner没有告诉你的

    1.        LoadRunner之-Block l  如何在一个脚本中实现不同事务不同次数的循环呢? l  案例:假如你想在一个脚本中,实现登录执行1次,查询执行2次,插入执行3次,怎么办?录 ...

  3. Ubuntu日常使用总结

    Contents 使用了将近一年的Ubuntu,感觉不用windows也可以处理日常的事务.并且我相信只要合理利用Ubuntu,一定可以取代你手中的Windows.我不是说Ubuntu有多么好,只是从 ...

  4. 空间数据导入Oracle数据库备忘

  5. 苹果为何要一定要去印度生产iPhone

    ​ 现在,关于苹果手机有几种流行的猜想和期待,今年恰逢iPhone问世十周年,新产品估计会有颠覆性创新,消费者正望穿秋水,翘首企盼,但只需待到金秋便可知晓,何况iPhone8或许也就是一小撮发烧友的选 ...

  6. Python——8函数式编程①

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  7. Channel Estimation for High Speed Wireless Systems using Gaussian Particle Filter and Auxiliary Particle Filter

    目录 论文来源 摘要 基本概念 1.时变信道 2.粒子滤波 3.高斯粒子滤波 4.辅助粒子滤波 比较 借鉴之处 论文来源 International Conference on Communicati ...

  8. Ambari2.7.4+HDP3.1.4安装 Centos7离线安装

    一. Ambari等简单介绍 1.1Ambari Ambari是一种基于Web的工具,支持Apache Hadoop集群的创建 .管理和监控. Ambari已支持大多数Hadoop组件,包括HDFS. ...

  9. react-intl 实现 React 国际化多语言

    效果预览 React Intl 国际化步骤 创建国际化资源文件 根据语言获取国际化资源 引入 react-intl 的 local data 创建 LocaleProvider 国际化上下文组件 创建 ...

  10. 前端每日实战:113# 视频演示如何用纯 CSS 创作一个赛车 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/mGdXGJ 可交互视频 此视频是可 ...