黑马程序员技术交流社区

标题: 【上海校区】2018年 iOS 面试心得 [打印本页]

作者: 不二晨    时间: 2018-7-18 09:25
标题: 【上海校区】2018年 iOS 面试心得
面试了几家公司之后,最后来到了爱奇艺(坐标上海),工作的内容是笔者个人非常感兴趣的领域。能拿到这个结果对于入行两年半&非科班的笔者来说无疑是幸运的。
很感谢面试官给我这次机会,因为并不是所有人都会认可你的努力,生活本来就没有任何理所应当。
具体的面了哪些公司,有哪些面试题在这里就不分享了,因为感觉借鉴意义并不是很大。
面试题方面笔者会专门在下一篇出一套自己认为可以用来面试高级 iOS 的面试题。所以请对面试题关注比较大的同学耐心等待1个星期。
本篇主要分享的是笔者在这阶段是如何准备面试的。可能每个人都有适合自己的学习方法,笔者的这套方法更谈不上十分高效,但还是希望对大家可以有一定的借鉴意义。
准备面试准备面试主要从三个点展开:
使用的工具在准备面试的过程中使用频率最多的工具有两个:
1. 有道笔记
笔记的整理过程就是理解的过程,反复咀嚼自己的笔记可以帮助理解。
2. 奇妙清单
清单这种工具是为了解放大脑,因为大脑是用来思考的,不是用来记忆的。把需要惦记的事情先扔进去,让大脑脱离出来~
这两个工具还有一个非常大的优势就是跨平台:都支持(Mac,Windows,Android,iOS)系统,同步的功能做的也都很好。所以使用它们可以在不方便用电脑的时候随时更新,特别是有一个好想法的时候可以马上在手机上记下来
面试题的整理面试题分类笔者尽可能搜罗了网上所有的iOS面试题,难度从低到高,当然也有介绍某个知识点的一些文章。笔者将这些题汇总以后分成了几个主题放在了有道笔记里面:
算法题的准备最后还要说一下算法题:笔者因为没有算法方面的基础,而且时间上也比较紧,所以只准备了数组,链表,二叉树为主的算法题,语言是C++。这些题目的来源主要是《剑指offer》和LeetCode上面的题目,一共学习了大概一个月的时间。
笔者把已经掌握的算法题放在了我的GitHub库上面(有答案,而且都是正确的):awesome-algorithm-question-solution。这个库里面的算法题大部分都是移动端面试比较常考的算法题。
目前都基于C++语言,有兴趣的同学欢迎提交Java和Swift的答案。
相关书籍还有就是可以用来准备面试的书籍:
时间管理好的时间管理策略可以更好地帮助计划的落地。在这里从两个点来介绍笔者的时间管理策略:
每天都做哪些事情因为当时在职的关系准备面试的时间比较有限,但是每天对不同类型的知识点都有比较固定比例的时间分配:
另外还要费分配出整理知识点的时间:对于上面这三种知识点其实都需要反复的整理和吸收,尝试着用自己的话表示出来,需要的时间占比也不是很重,但是却很有用。
不做哪些事情在时间管理这块,笔者个人比较赞同的一个观点是:比起知道做什么,首先知道不做什么更重要。因为人的精力是有限的,一天就只有24个小时,当某件事很重要的时候,其他的事情就要做个让步。
为了准备面试,笔者在今年上半年放弃了很多事情:
坦白说在笔者拿到offer以后才去了健身房,和同学家人聚会,也见了老朋友,算是都补上了。他们也都表示比较理解,所以笔者也感觉也蛮欣慰的。
找一份工作并不难,但是找一份目前最适合自己的工作却非常难,希望大家也能够做一些取舍,列好计划并付诸实践,应该是会有好的结果的。
简单讲完了这阶段的面试经历和准备面试的方法策略,下面说一下笔者对一些同行的某些想法想说的。因为这些也包括这上半年面试别人和自己去面试体会到的,所以在这里就和面试心得一起说了。某些地方可能有些主观。
对一些同行的某些想法想说的“行业不景气了”这句话每个月都会听到一两次。今年上半年很多朋友在面试,可能因为有些朋友不是很顺利,有感而发了。而且笔者上半年也在给公司招人,招的是高级 iOS 开发,有一个感觉就是很难招。虽然年限已经有3,4年了,但是关于设计模式,数据结构,iOS 底层方面的知识了解的甚少,开源库也只看过SDWebimage(或许只是看了网上的解析而已),总之没有达到笔者个人对一个高级 iOS 开发的要求。
但是反过来我也听到好多人去了很不错的公司,比如今日头条,BAT等等,评级也比较高。
所以笔者个人觉得并不是这个行业不景气,而恰恰是很多开发者没有保持一个持续学习的状态,只是将一年的经验重复多年,最终导致自己的能力小于所属年限的能力标准的情况出现
笔者认为既然做为一名软件开发人员,就要不断地突破自己。对于前端的开发人员,要尽可能地多学一些脱离UI层面上的通用性的知识,比如数据结构和算法,网络协议,设计模式,看一些好的开源库也是不错的(上半年面试了不少于10个人,问看过哪些开源库没有一个不说SDWebImage的)。在这里推荐笔者之前写的一些源码解析的博客:
“因为我学历不好,所以很难拿到面试机会”这些话在跟我比较熟的同行里面听到比较多,他们觉得自己的面试机会受限于学历。
但其实简历上面可以吸引人的地方可以有很多:高质量的博客,高质量的Github代码,优秀的项目经验,有深度的技术分享等等。
有句话笔者个人非常喜欢:
Alter what is changeable, and accept what is immutable
意思是改变能改变的,接收不能改变的。学历既然很难改变了,那就接受它,不去抱怨,不去拿它当借口,应该把精力放在能改变的事情上:
笔者个人是比较看重1,2点的:从这两点可以看出这个人对技术的追求,是否热衷于分享,是否有比较好的表达能力和思路。而3,4点由于客观方面的影响比较多一些,所以相对来说笔者个人并不是很侧重。
笔者看到过一项调查:相对来说学历越高,毕业学校越好的开发者往往在GitHub和博客上面产出更多。这不失为一个值得思考的问题,同时也更加说明了学历和毕业学校相对来说不是那么太靠前的开发者更要注重GitHub和博客这两块。
“(大公司)面试造火箭,工作拧螺丝。”这句话也听过不少次了,能听出来说这句话的人多数带着些许负面情绪说的。
笔者个人认为大公司的这种招人策略是非常道理的:因为既然是大公司,有丰富的资源,它要么是正在造火箭,要么就是准备造火箭,所以招人的话肯定是招那些已经具备造火箭能力的人或者是那些培养之后可以造火箭的基础比较好的人。而且万丈高楼平地起,总不会大家都是围着设计图讨论吧?每个人都有每个人的职责,况且哪个将领不是从士兵开始做起的呢?
所以我们应该以正确的态度去对待这件事情:
“这部分工作中我没遇到过,所以不了解”今年上半年也为公司招了人,上面这句话是笔者做面试官的时候经常听到的,比如问“NSSet和NSArray的区别”,“iOS有哪些反射实践?”这样的问题的时候,面试者通常把自己没有做过作为自己不会的借口
其实笔者觉得上面这两个知识点和做没做过相应业务没有太直接的关系(笔者本人在实际项目中也没有做过)。
所以说无论学习哪个语言,如果可以从一些通用性知识点里探索出该语言对该知识点的实现的话,会更有助于加深对该语言本身的理解,也可以提高相应的业务能力:
比方说如果你仅仅需要一个集合,将来只需要判断元素在不在其中的话,你只需要用NSSet就好了;但是如果你不知道NSSet的存在的话,你可能就只会用NSArray来做,要知道数组的查询速度是要比哈希表低的多的。
所以说做学问最怕的是不知道自己不知道:多接触,多探索总还是好的。
“我不是科班的,所以数据结构和算法我不会”笔者作面试官的时候发现:在非科班的群体里想主动学习数据结构和算法的人并不是很多。因为每当笔者问一些关于数据结构和算法方面的知识的时候,总会听到以自己不是科班出身作为不会这类题的借口。
笔者认为如果想要在写程序这条路上面走远,这一块是肯定绕不过去的。有一个公式:
程序 = 数据结构 + 算法
一个好的程序往往跟这两者是分不开的。即是说若想写出好的程序,就要选择好合理的数据结构和算法(至少也要选择正确的数据结构)。
举一个例子:现在需要你用一个集合来保存一些人名,并提供一个接口来判断传入的人名是否在这个集合里。那么如果让你来实现这个功能,这个集合的数据结构你会用数组,字典,还是Set呢?
如果你不了解Set的优势,那么你很可能就会用数组来做了(通过返回的index来判断)。但是数组查询的时间复杂度是O(N),远不如Set的O(1),所以这就说明了使用合适的数据结构对于性能的帮助会有多大。
笔者也不是科班出身的,但是学习了数据结构和算法之后,发现自己在设计功能,以及理解代码的能力上提高了一大截。像上文所说的笔者也只是掌握了30到LeetCode题,和一些比较基础的数据结构而已。所以很希望各位非科班的同学也可以好好规划自己这一块的学习。而且有一些科班出身的同学,恰恰因为自己是科班出身,所以在工作之后反而就没有主动去精进这方面知识了,所以非科班的同学更要主动去规划自己,以最快速度填补自己的这块漏洞。
以上就是笔者这段时间的一些思考和想法了。
这篇总结就在这里写完了,一共两个部分,希望您能有所收获,也非常欢迎能跟我一起交流~


作者:J_Knight_
链接:https://juejin.im/post/5b4cd5aae51d455b5d3efa2c




作者: 不二晨    时间: 2018-7-18 11:12
奈斯,优秀
作者: 小影姐姐    时间: 2018-7-18 11:22
牛牛牛!
作者: 梦缠绕的时候    时间: 2018-7-18 15:38

作者: wuqiong    时间: 2018-7-26 11:48

作者: 吴琼老师    时间: 2018-7-26 16:33





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2