美文网首页iOS 面试题整理iOS面试iOS面试题合集
iOS晋升之路:外包—苏宁—阿里 好家伙我是怎么快速晋升的?

iOS晋升之路:外包—苏宁—阿里 好家伙我是怎么快速晋升的?

作者: lp_lp | 来源:发表于2021-01-28 16:44 被阅读0次

    写在开篇的思路

    2020年是多灾难的一年,对于我们每个人来说,健康地活着比什么都重要。受到疫情的影响,很多公司都过得比较艰难,裁员更是普遍,所以对大部分来说保住饭碗就很不错了,更别说什么跳槽晋升了。

    但今年的我,似乎要比很多人幸运,专科出身,起点很低了,在看重学历的一众大厂中杀出一条血路。工作两年我就跳槽进入了苏宁,在苏宁待了3年,现在竟到了阿里。身边很多人都好奇,我究竟是怎么做到的?下面就来分享一下我这些年是怎么快速晋升的,希望能够给你带来一些启发和帮助吧。

    本文主要分享4个点,可按需来阅读:

    • Share1:阿里iOS岗面试题

    • Share2:苏宁开发三年,我如何积累经验?

    • Share3:5年开发经验,如何跳槽阿里?

    • Share4:如何提升阿里社招面试通过率?


    Share1:阿里iOS岗面试题

    • 1、介绍项目

    • 2、在KVO中,他是怎么知道监听的对象发生了变化?

    • 3、字典的工作原理 ?怎100w个中是怎么快速去取value?

    • 4、一个上线的项目,知道这个方法可能会出问题,在不破坏改方法前提下,怎么搞?

    • 5、Block和函数指针的区别?

    • 6、性能优化

    • 7、YYModel和AF源码

    • 8、如何自己设计json转model

    • 9、架构

    他们的面试官好像都爱问一下底层的东西,比如这次面试上来机会问我KVO的问题。
    问题【1】,看着好像很吊的样子,仔细一样不去思考,可能还真不是太了解,
    问题【2】,这个就是纯纯的数据结构的问题了。
    问题【3】,这个就是iOS的runTime的问题了,要只要isa,和一些swizzling技术
    问题【4】,就是看你了解有多广泛了。

    二面

    • 1、浅拷贝和深拷贝的区别

    • 2、Block的循环引用、如何解决、原理

    • 3、Block和delegate的比较

    • 4、kvo的实现原理

    • 5、Autorelease pool的实现原理

    • 6、消息转发机制

    • 7、线程死锁的四个条件

    • 8、进程和线程的区别

    • 9、持久化

    • 10、事务的特征

    中途还讨论了Masonry的约束应该写在哪里,我说应该写在layoutSubViews,他说会调用多次,然后争论了一会儿

    三面

    • 主要问了项目的一些东西 和给一些场景问我如何实现

    • 自我介绍 介绍一些项目难点

    • 主线程是相对于什么而言的

    • 一张图片的内存占用大小是由什么决定的

    • 索引的作用

    • 索引的优缺点

    • 在数组中找最小的k个数

    • 淘宝下拉加载更多如何优化

    • 淘宝页面发送HTTP请求的过程

    • 介绍一下MVVM

    • 知道哪些设计模式

    三面面试官主要就聊了一些具体场景问题和一些基础,基础应该是没太大问题。

    答案文档整理在文尾处!

    (1)善于利用碎片时间,学习提升自我

    • 从初级程序员升到资深开发,没有别的捷径可走,从始至终我都奉信:进步得靠学习,学习得靠时间堆砌。现在互联网行业基本上都是996趋势,程序员加班情况更为明显,所以利用碎片时间来学习,才是提升自己最合适的方式。
    • 先算算我个人的学习时间账(可参考,可借鉴):
    • 每天早上起床后,大概30min(上厕所,吃早餐,通勤等)

    • 每天上班时,利用别人划水的时间搜一些技术资料,逛逛技术博客,约30min。

    • 晚上通勤、吃饭(这个阶段我一般会休息+娱乐来调整自己状态,刷刷微博、朋友圈)

    • 晚上到家后,不管再累都会抽出1~2个小时来学习,看书+看视频。

    • 这样计算下来,一天大概平均在2~3小时,一周5天至少10个小时,不包括周末。
    • (2)解决Bug积累经验(提升自己优化能力)
    • 论坛上流行一种说法:大部分的程序员都是通过BUG来积累经验的,你解决的每一个BUG都是你的经验。
    • 实际上,这观点并不在强调BUG的重要性,而是意味着程序员可以通过改Bug来提升自己的优化能力,但这个“改”就非常关键了。

    (3)参与开源项目

    其实,在很多面试攻略和分享中,我们都能get到一个信息:参与过开源项目的面试者往往更吃香,更容易获得offer。

    那么,为什么参与过开源项目的程序员会更吃香更抢手呢?

    大型的开源项目几乎都是大型团队构建的,且非常复杂,由此可以推断出你个人的能力和素质都是过关的;

    开发开源项目,说明个人的综合能力得到极大提高,这些能力包括“书面沟通能力”、“了解如何挑选和协商要处理的事情”、“完善Git流程/GitLab流程”、“理解语言语法”等等;

    其他:建立线上声誉、保持个人的进步的动力等等。

    (4)提升自己的软实力,让自己更专业

    按照我个人的理解来说,初级程序员更像学生,而高级程序员则需要拥有“独当一面”的能力,而这个过渡是需要时间的,也是我前两年来努力的方向之一。

    提升自己的软实力,成为更专业的程序员:

    要学会积极主动沟通;

    提升自己解决问题(bug)的能力,积累解决问题(bug)的经验;

    协调(扯皮)的能力:工作方面积极主动协调部门;

    学会合作,一起完成一个任务或目标。

    Share3:5年经验如何跳槽阿里?

    • Step1:知己知彼(了解岗位职责,规划职业成长路径)
    • ①岗位职责
    • 求职时,我们往往更注重简历,却忽略了“岗位职责”这个关键词,实际这往往也会影响到我们的面试结果。
    • 俗话说“知己知彼,百战不殆”,岗位职责非常清晰明确地标注了应该干什么,怎么干,干到什么标准,对于程序员来说,技术掌握程度以及之后的开发内容都要了解清楚。
      ②成长路径

    在第一次正式工作后,我就非常认真仔细的思考过自己日后的发展方向,实际上程序员的成长轨迹(晋升路径)越早确定越好。程序员的方向大致分为技术岗和管理岗,而这两个方向所看重的能力还是有很大本质区别的。

    成长路径如下:

    • 管理岗:初做者→技术经理→技术总监→副总裁→总裁

    • 技术岗:初做者→高级工程师→技术专家→领域专家→领域权威

    image

    Step2:制定目标(制定明确的、可衡量的、可达到的、有时间限制的目标)

    在职场中,一定要制定自己的的目标,这样才不免被沦为“咸鱼”,想要快速晋升,就得从目标下手,目标需要满足SMART原则:

    • 具体的(Specific)

    • 可以衡量的(Measurable)

    • 可以达到的(Attainable)

    • 具有相关联性的(Relevant)

    • 有明确的时间截止的(Time-based)

    简单来说,我的操作就是将自己的目标进行阶段性的拆分,比如我1-3年需要达到一个什么阶段,3-5年要达到什么阶段,然后在这个阶段里继续进行拆分,树立一个一个小目标,然后构成一个大目标,总目标,这样就会容易达到得多了。

    Step3:善于思考(培养逆向思维、优化思维)

    不想机械式的码代码,快速晋升之道首先就要转变自己的思维,要开始慢慢调整,善于思考一些问题,培养逆向思维和优化思维。

    所谓的逆向思维,就是要多问自己为什么?如:

    • 为什么需要这些数据?

    • 为什么要做这些事?

    • 为什么要做总结?

    • 为什么要做规划?

    • 为什么要做代码审核?

    而优化思维,则是把事情做得更好,即使是繁琐杂事,也有优化的空间,包括效率和效果,任何事都是有优化空间的,缺少的是发现的眼睛。

    Share4:如何提升阿里社招面试通过率?

    • (1)准备简历
    • 面试是会根据简历来进行对你提问的,尤其是对于开发人员来说,看到你的项目经历后,或多或少都会问相关的问题,甚至一线互联网公司会针对项目进行提问,所以准备简历这一环节就尤为重要。
    • 准备简历时,一定要真实,简历作假是职场大忌,切记切记。其次,要分清楚“了解、熟悉、精通”三词的区别,对技术栈的掌握程度跟面试题难度密切相关


    当然,为了帮助各位能够顺利过了简历,我也准备了一些模板大礼包,包括我自己的个人简历也在里面,欢迎大家参考:> 这里有我准备的一线大厂面试资料和简历模板,欢迎Star!
    https://docs.qq.com/doc/DVXdtWXJGVWt0TkVG

    (2)尽量找内推

    校招容易,社招难。这是一线互联网的普遍现象,对于应届生的要求相对来说还是比较宽松的,但对于有一定工作年限的人来说,技术要求就比较高了,因此很多中途想要进一线大厂的人都说社招实在太难了,简历都过不了。

    那其实也是有一些“捷径”可走的,可以找一些内推机会,相对直接社招来说,几率大大提升了。

    (3)对技术要掌握一定的广度和深度

    既然是技术岗,那么企业对于技术掌握的广度和深度是有自己相应的要求的,学历在技术面前都显得没那么重要了,因此努力提升自己的技术水平是程序员的首要目标。

    那么,技术要掌握到什么程度呢?特梳理了一下技术路线,如下图谱:

    对于现在流行的一些技术框架,我又掌握得如何了呢?实际上,我是有一个记录学习心得,做学习笔记的习惯,所以我对一些技术也有自己的总结和经验。

    iOS核心成长笔记:

    成长笔记

    面试核心技术笔记


    高效高质量代码方法:
    高效
    学习干货与总结
    更多干货文档

    以上文章中,提及到的所有笔记内容、面试题等资料,均可以免费分享,只需要你:在文末 “点个赞” 或者 评论 “Mark”,谢谢您的支持

    欢迎加入我的iOS讨论圈子:761407670 加入回复简书就好了! 获取文章资料 一起交流技术

    学习,永远不会辜负你,靠学习得到的,永远是你最宝贵的财富。

    小编文章面试请观看合集

    相关文章

      网友评论

        本文标题:iOS晋升之路:外包—苏宁—阿里 好家伙我是怎么快速晋升的?

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