16
回答
IOS面试被虐史
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我是宇宙最屌

….在停车宝公司工作期间,我已经有二三年工作经验了,但是感觉自己已经符合高级工程师的title了,做app经验丰富,什么功能都能做,还接过几个外包,在公司领导和同事都很看好我,我工作严谨负责,开发速度也比别人快很多,敲代码对我来说有很大的成就感,我对我的技术非常自信,但是公司就我一个iOS,没有同行的交流,而且我几乎不会特意看iOS的博客和一些前沿的技术,不是我懒,而是why?我现在工作的任何事我都能做,外包我也能做,单兵能力极强,会五笔,会vim,我为什么要学那些花里胡哨的东西?总之一句话:我是宇宙最屌!!!我是宇宙最屌!!!我是宇宙最屌!!! 
….后来到15年8月,公司将要倒闭,重新找工作才发现问题。起初我想:我能耐这么大?hr还不抢着要!结果却不是这样,各种被虐,例如这些问题:

  • NSString为什么要用copy修饰?还有NSArray NSMutableArray用什么修饰?深拷贝和浅拷贝?

    可能大家觉得这太简单了。。但是那个时候我真答不来,我连strong都不用,只用reatin, 现在你居然告诉我:copy是保证传进来的值不会被外界修改。我心想:我就用reatin咋了,从来没出错啊,我不在外界修改就是了,我为什么非用copy? 我做了那么多App,你问我基础题?

  • weak使用方法?

    :我从来不用啊,我就用unsafe_reatin,然后在dealloc时把delegate置为nil,咋了? 
    面试官:满脸黑线。。那你用block时 self如何修饰? 
    :哦,原来weak不光可以修饰delegate,还可以在用block时修饰self,防止循环引用呀??循环引用听过一点,具体不清楚,我很少用block, 怕出问题 
    面试官:你定义一个block,写在纸上 
    :好像是void(^)test() 还是void^(test)() 对吗? 
    面试官:好吧。。看来你真不会用

  • 多线程?

    : 哈哈 终于碰到一个理论题,可以高谈阔论了~ 有NSThread GCD NSOperation三类,优缺点分别是啥 balabala.. 狂喷3分钟 
    面试官:GCD的并行跟FIFO有冲突吗? 
    :我操,我知道肯定不冲突,但是不知道怎么解释,既然是并行,执行顺序会打乱,有可能后加入的会先执行完,怎么还能FIFO,操,想不通,不知道。。(这个问题后来过了好长时间才想清楚) 
    面试官:GCD你会用哪些方法? 
    : async, sync, group,barrier balabala说了一大堆。。。 
    面试官:你实际用过哪些方法? 
    : 操,我从来没用过-_-!!! 我见过第三方源码里有用到。。 (group实际场景没用过。。barrier实际场景没用过。。就会理论不会实践)

  • runtime 用过吗?

    :用过!(心里发虚。。)我知道它可以实现model和字典相互转化 
    面试官:你自己写过model和字典相互转化吗? 
    :没有,只是见过别人写的代码。。 
    面试官:model和字典相互转化的第三方库你用过吗?比如MJExtention? 
    :你说啥?我没听清?啥extention? 没用过(好像我是外星人) 
    面试官:你知道swizzle method吗?黑魔法? 
    :操,你说啥。。?能说中文吗?(我真是外星人了,混淆从没听过,别说具体应用了。。) 
    面试官: 你看过runtime的源码吗? 
    :你说啥?runtime的源码是公开的?在哪下载啊?没听说过呀 
    面试官:没法聊了。。

最后我面试了几十家公司,找了近2个月,天天早出晚归,面试已经成为了我的工作,面试成了一个流程,我知道肯定没人要我,而我只想面试完走人。。终于有一次碰到了一个面试官,要求我上机做题,我做的还不错,最后录用了,这家公司是某知名招聘公司。我的面试经历可以写一本书了,书名就叫《50次面试失败的反面教材》。唉,那时候的我狂妄自大,单纯,心直口快,非常内向。。不说了都是泪。。键盘快进水了~~

某招聘公司

这家公司的团队技术氛围不强,综合技术能力也偏弱,虽然iOS人数很多,但是对我的成长很低,我的工作方式跟之前是一样的,只是写界面,而写界面对我来说已经没有任何挑战了,所以技术成长非常慢。 
1.直到一个同事的到来,他叫辉,他认识一些大公司的朋友,讲了很多我没听过的东西。比如

  • github上的流行库,比如facebook

    我就是从那时候才开始喜欢上github的,原来除了下载代码,不会主动到上面找代码的,连github的搜索 命令都不会用,我还问辉,怎么搜object-c的star星比较多的库啊?那时候有多蠢。。

  • 阿里用的iconFont;

  • Masonry

    我平时用frame写代码,听他说masonry就想学学,可我学了一阵就放弃了。。现在想想那时候太蠢了,masonry多好学,而且多好用~~~

  • KVO的内部实现原理和catetory的实现原理

2.还有一个印象深刻的同事,叫“洁”,她教了会我:

  • cocoapod创建私有库

    起初我对此非常排斥,这属于项目管理的范畴,不属于程序员的任务,感觉团队不务正业,以为跑偏了。。后来才发现这玩意是有多普及,用处有多大!

  • 用addChildViewController来写界面

    第一次看见她这么写代码,我都想骂人,添加child vc, 这不是增加项目复杂度吗?后来看到许多大公司的页面结构时,脸打的啪啪疼。。

3.还有一个人教会了我很多东西,就是我自己,在离职前两个月,正好这段时候没有什么活,我发疯的钻研技术,把iOS的高级文章看了千篇都不止(我上班就是看博客,总结到印象笔记,敲demo),但是来不及细研究,最多写个demo,很多实用场景还是不清楚,不过通过这两个月的学习,我的知识面广度和深度都上升了好几个档次,再也不会出现没听过的前沿名词了,即使没实际用过也能了解个一二三,比如

  • React Native, weex (写了个demo,没有实践经验)
  • 组件化,如网络模块和路由模块,如何设计实现(我亲自实现了)
  • RAC+MVVM (理论,连demo都没写过,只是看过别人写的demo)
  • 单元测试 (主要还是理论,没有实践经验)
  • 持续集成 jenkins (实践了,这其实不是面试的重点,因为跟技术无关)
  • app安全与加固(理论,没实践)
  • app性能优化(这个是面试的重点的重点)
  • 多线程的深刻理解(各种锁,gcd里的所有方法,都必须要熟!!!这才是面试的干货)

后面的以后再写了,要写的太多了~~~~

<无标签>
举报
任我飞啊000
发帖于4个月前 16回/2K+阅
共有16个评论 最后回答: 3个月前

技术的意义在于什么?24岁的程序员和30岁的程序员的区别是什么,拿8千和8万的程序猿的区别是什么

--- 共有 1 条评论 ---
任我飞啊000对呀 只知道会用和了解机理的会用天壤之别呀 4个月前 回复

你肯定没有看ios程序员面试宝典

--- 共有 1 条评论 ---
任我飞啊00015年那会相对少一点,我当于是在github上看到了一套高级工程师面试题还当宝贝呢,可现在,哈哈 现在的iOS的面试题满天飞,各个层次的题都有,都挖掘的差不多了 4个月前 回复

别听那些评论说什么招聘造飞机,进去后拧螺丝。我可以告诉你,如果你把自己定义为拧螺丝,那么就安心接收流水线作业,如果你觉得自己是个要进取的人,那么就必须接受别人扔过来的难题。就IOS市面上的整体情况,一大堆都是只会拧螺丝的,却认为自己是个造火箭的料!

其实我感觉很多公司技术的侧重点不一样,有些技术在A公司很常用,但是在B公司根本就没怎么用过,我以前面试得时候就是这样,最后就苦逼了。。。。

顶部