V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ArthurHe
V2EX  ›  职场话题

第一次面试别人是怎样的体会

  •  4
     
  •   ArthurHe · 2017-02-27 13:58:13 +08:00 · 7227 次点击
    这是一个创建于 2859 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不安的开始

    iOS 开发没人要了 自从去年后半年以来, iOS 开发相关工作就被唱衰。很多人抱怨裸辞后找不到工作,可谓是哀鸿遍野。看到了太多这样的帖子,身边也有相识的人遭遇了公司解散,失业后迟迟找不到工作的窘境。这也直接导致了我内心的忐忑和不安,不禁要问, iOS 从业者的未来在哪里?我又该何去何从呢?这样的疑问,这样的不安,一直伴随着我。在结合别人的现实的遭遇后,分析了一下造成现阶段初级,中级 iOS 从业者找工作难的原因:

    • 市场过度饱和,培训机构追求自身利益,在 iOS 开发人员相对稀缺阶段,培训了大量的从业人员,扰乱了市场正常的供需关系,导致从业人员供大于需;
    • 鱼龙混杂的从业者,很多开发者并不是科班出身,只是听说 iOS 开发者的薪资待遇高,才决定去培训机构学习,经过四五个月左右的强制灌输和培训机构的包装后,摇身一变成了具有两年开发经验的 iOS 开发者,其本身不具备计算机专业相关的基础知识;
    • 资本市场资金的收紧,导致流向互联网领域的热钱迅速减少,相比前几年互联网行业的创业潮,很多创业者张口闭口我们是颠覆者,一定会替代某某某,只要嘴炮一番就能忽悠到投资人的钱,今年的资本市场回归了理性。那些没有清晰盈利模式的初创公司迅速倒闭,相关中小互联网公司的用人需求在萎缩;
    • 市场需求的理性回归,很多培训班出身,或者工作年限不足三年,或者是一年工作经验用了三年的初中级开发者满足不了市场上很多公司对于中高级开发者相关的技术要求,于是,被市场无情的淘汰;
    • 行业内薪资待遇的降低, iOS 开发已经结束了早期因从业者稀少而造成的市场红利时期,进入到了一个稳步发展的相对稳定时期。因此,薪资待遇回归到了一个正常的水准。那些早期享受到这种红利的开发者,一时间接受不了薪资待遇的降低;
    • 技术层面方面, iOS 开发依托苹果提供的平台,该平台的封闭性决定了开发者所接触的技术面比较狭窄,脱离了苹果,不能完全胜任其他技术工作;

    我所遇到的一个例子

    带着这些不安,对于已经结束的 16 年,我做了一份[总结]( http://xibhe.com/2017/01/15/再见! 2016/),也包括 17 年的一些计划。或许是心志不坚,或许是颓废太久,这种不安仍旧存在,直到上周面试了一个来公司应聘 iOS 开发的应聘者......

    周五下午,人事和我说能不能帮忙面试一下,本来是另一个项目组需要的人,但恰巧他们的负责人不在,就让我去面了。第一次面试别人还是有些紧张,好像自己第一次被别人面试一样紧张。但左等右等还是等不到人事通知我去面试,后来大概半小时后被人事告知那个来面试的人已经走了,据她说面试题只做了一半,人就走了,可能是被我们的面试题吓走了。但面试题我也看过,是四十道很基础的面试题呀!表示不解啊!本以为这次安排的面试就这样结束了,后来人事通知还有一个已经写完了面试题,在沙发区等着,于是我就开始了这次面试之旅。

    短暂的两分钟的沉默,我简单看了一下他的简历,上面工作经验写着三年。心里便盘算着从哪些知识点入手可以探出对方是不是真的有三年工作经验。先是让对方做了一个简单的自我介绍,然后开始对着简历问一些问题,简历上写了四个项目,每个项目所用到的技术都是一些大众化的技术,比如,网络请求库 AFNetworking ,图片加载库 SDWebImage ,数据库 FMDB ,刷新库 MJRefresh ,适配库 Masonry 等各种三方库的使用。于是我便问了以下的问题:

    • NSOperation 与 GCD 的区别
    • GCD 中如何避免死锁和数据竞争
    • Block 的使用及如何避免循环引用
    • 使用过哪些设计模式
    • 单例,什么是单例,单例的作用
    • 内存管理
    • 网络请求库的使用
    • JS 与原生应用是如何交互的
    • 了解过 RunTime 吗
    • 通知是异步还是同步
    • 该如何对 tableView 进行优化,实现滑动的流畅性,以及如何避免 tableView 代理方法中冗长的代码
    • SDWebImage 的运行机制
    • App 中的多用户逻辑
    • 如何实现一个可以循环滚动的轮播图(类似于京东,淘宝首页顶部效果)
    • 给你一个新项目你会怎么做
    • 是否能看一下你的技术博客或是 GitHub 上的开源项目

    对方对上述问题的回答模棱两可,十分的模糊。其中涉及到 GCD 那块的问题,只说了用过, GCD 的如何避免数据竞争和死锁,以及它与 NSOperation 的区别只是把什么是 NSOperation 用名词解释了一下,而对于 Block 的循环引用问题,支支吾吾想了半天回答的文不对题。设计模式是典型的 MVC ,倒是提到了 MVVM ,但这里也只是简单的提到,就没有什么下文了。单例的使用,边想边说,整了半天也没有将声明单例的具体方法说明白。内存管理这块,据他说,学 iOS 开发时 MRC 已经没人用了,他就直接用的 ARC 。 JS 与原生应用交互这块说没有用过。那么 RunTime 呢?说是底层的东西没有怎么了解过。 tableView 的优化方面,说是用的原生 API 的代理方法,这个还需要优化吗? SDWebImage 的运行机制,把它的使用方法说了一遍。 App 中的多用户逻辑,说是服务器的事,客户端不需要考虑。轮播图功能的实现,说的是使用 NSTimer 。给你一个新项目你会怎么做,说的是先花一周进行需求分析,再新建工程,使用 CocoaPods 把那些要用到的三方库引入到工程中。问完了这些问题,我还是抱有一丝幻想的,心想也许是太过紧张了,再看看他做的项目吧!

    看了下对方手机上他参与开发的项目,是一些与美食推荐相关的项目,有一个已经停止维护,拉取不到任何数据了。剩下的都是一些数据使用 tableView 展示的普通项目,没有什么逻辑特别复杂或是需要使用很高明技术的功能。自此,我仍然没有放弃,心想或许对方还研究过其他的技术点,于是就问对方,是否能看一下你的技术博客或是 GitHub 上的开源项目。对方回答说,没有。此刻,我也只能道了两声谢谢,说有结果人事会通知你。心里想着,本来还想问有没有使用过 Swift ,可是现在看来,已经没有问的必要了。

    结束

    v2ex 红利已经结束了,那个只要会使用 tableView 等常用控件就能找到工作的时代结束了。 曾听一位前辈说过,

    “感觉每个做技术的一开始都是一粒沙子,不断修炼学习吸收营养变成大颗粒的沙子。 再学习其他东西把自己变成土块儿,时间是一把大筛子,每次过滤掉小沙粒,只留大块儿在上面,在你被筛掉之前要么变的比网眼大留下来,要么赶紧被筛掉转行吧!”

    33 条回复    2017-03-01 07:46:18 +08:00
    tianshuang
        1
    tianshuang  
       2017-02-27 14:15:54 +08:00
    赞同 👍
    jadetang
        2
    jadetang  
       2017-02-27 15:08:40 +08:00
    5 年工作经验了,结果面试的时候,别人问我 HTTP CODE 405 的意思,我答不上来,感觉好鄙视自己哈。(逃
    game3108
        3
    game3108  
       2017-02-27 15:48:44 +08:00
    我来回答一下,可以一起讨论讨论,感觉很多地方说错了,但脑子里着么记得。

    NSOperation 与 GCD 的区别
    NSOperation 是在 GCD 上封装了一层,可以取消暂停未执行任务,也可以方便的设置任务优先级(其实 GCD 也可以,只是比较麻烦),GCD 是 c 的 api ,具体代码可以看 libdispatch (虽然看过一些,但不确定要说到什么程度,比如 async 底层是一个 pthread 的线程池,有优先级 8 个队列,任务 block 先进队列,然后从线程池里面捞出\创建线程执行)。

    GCD 中如何避免死锁和数据竞争
    死锁的四个条件,只要不全部满足就不会死锁。如果避免的话,没想到好的办法,只想到自己建一个 serial queue ,串行执行。

    Block 的使用及如何避免循环引用
    mrc 下用__block , arc 下用__weak 修饰参数。

    使用过哪些设计模式
    单例(dispatch_once),原型(copy 协议),抽象工厂,抽象方法,建造者(mansory 的 maker),适配器(对象适配器 delegate),组合(uiview),中介者,观察者( nsnotification ),装饰器(category), proxy(nsproxy 消息转发)。剩下的不太记得了。

    单例,什么是单例,单例的作用
    单例就是内存里常驻一个对象,获取和使用都是这一个对象。作用的话。。。

    内存管理
    引用计数原理。核心是谁创建的谁释放,谁 retain 的谁释放。

    网络请求库的使用
    AFNetwork?ASIHttpRequest?

    JS 与原生应用是如何交互的
    iOS7+,使用 javascriptCore , iOS6 与 iOS6 以下用 uiwebview 的拦截 request 。 oc 可以直接运行 js , evaluteJavascript 什么的方法。

    了解过 RunTime 吗
    了解过,看过 runtime 源代码,分 old 和 new 版本。网上 old 版本解读比较多。

    通知是异步还是同步
    notification 是同步

    该如何对 tableView 进行优化,实现滑动的流畅性,以及如何避免 tableView 代理方法中冗长的代码
    ASDK 核心: CoreGraphic 异步绘制,回主线程用 CALayer 显示(backed layer)。多图层预先累加,防止离屏渲染和多图层累加。 FDTableViewCell 核心:预先缓存 cell 和 cell height 。 VVTableViewDemo 核心: estimate 预估。
    避免冗余代码,单独抽出 delegate 也可以, mvp 或者 mvvm 将业务逻辑封装成 presenter 和 viewmodel 进行运行。

    SDWebImage 的运行机制
    两个 NSOperation ,一个操作缓存,查找失败,调另一个下载图片,然后直接解压图片,再回到主线程设置。(解压过程就是空间换时间,也算是优化流畅速度的方法)

    App 中的多用户逻辑
    没做过。。。 NSUserDefaults 存?加 token ?

    如何实现一个可以循环滚动的轮播图(类似于京东,淘宝首页顶部效果)
    UIScrollView,pageEnabled=yes,然后用 NSTimer 做轮巡?(这个好像有开源库,但没看过)

    给你一个新项目你会怎么做
    分析项目,列需求,分析需求,设计文档,评审文档,排工期,开始做。。。

    是否能看一下你的技术博客或是 GitHub 上的开源项目
    能,但没啥 star 。都是一些开源代码的解读文章。。。倒给 mansory 提过 pull request 修过 bug 。
    Warder
        4
    Warder  
       2017-02-27 19:42:23 +08:00
    最后那句像是禅师会说的话
    coderluan
        5
    coderluan  
       2017-02-27 19:52:58 +08:00   ❤️ 1
    具体的忘了,大概就是问了些常见的技术问题,感觉就是让人家用嘴又答套笔试题。

    现在面试别人也有两年了,目前的原则就是:

    1.能笔试的题不面试问(笔试也是我出题),也就是各种用背的知识都不在面试问。
    2.笔试题留两道算法题,然后面试引导对方优化代码和复杂度,考察对方的思考能力。
    3.就简历中的项目询问些技术细节。
    4.我很喜欢问对方最近看了什么书,感觉咋样。或者论坛博客 github 之类的。
    5.鼓励对方询问我各种问题。
    6.考虑对方性格,稳定性之类的问题。
    maitiantuzi
        6
    maitiantuzi  
       2017-02-27 20:28:08 +08:00
    说起来特别搞笑,我刚刚被某企业面试,而就在 6 个月之前,我还作为技术面试官替前东家面技术员,那是我第一次面试别人。
    感觉就是有种小小的窃喜——我 tm 也可以面试别人了。
    开始时事无巨细,从垃圾收集到设计模式,但是在面了 6 个人之后就已经麻木了,我有一本《麻衣神相》,研习已久。
    从此以后,我会对面试者的面相,穿衣搭配,一些小动作细节来形成初步印象,大约占 40%。
    至于技术嘛,就交给另外两个面试官吧。。。
    chiu
        7
    chiu  
       2017-02-27 22:44:15 +08:00 via Android
    虽然不是做移动开发这一方面的,但文中道理放到很多地方都适用,学习了
    HLT
        8
    HLT  
       2017-02-27 22:45:09 +08:00
    这几年面过至少 300 人左右。。。

    这说来就话长了。。哈哈哈。。。奶子大了什么鸟都有
    elgae
        9
    elgae  
       2017-02-27 23:00:52 +08:00
    @ArthurHe 公司还在招么?求勾搭
    YiYing
        10
    YiYing  
       2017-02-27 23:11:06 +08:00
    第一次面人比较紧张,问的问题比较凌乱。
    最近也被面了好几次,发现一些面试官根本就脱离了面试的目的,为了问问题而问问题,以考倒被面试者为目的。

    最近写了一篇博文<a href="http://muchstudy.com/2017/02/12/%E6%80%8E%E6%A0%B7%E5%85%A8%E9%9D%A2%E4%BA%86%E8%A7%A3%E5%BA%94%E8%81%98%E8%80%85%E7%9A%84%E5%AE%9E%E5%8A%9B/">怎样全面了解应聘者的实力</a>
    YiYing
        11
    YiYing  
       2017-02-27 23:13:36 +08:00
    @YiYing a 标签不能用,贴个短点的

    怎样全面了解应聘者的实力: http://blog.csdn.net/yzf913214/article/details/55008065
    Zubin
        12
    Zubin  
       2017-02-27 23:17:20 +08:00 via iPhone
    @HLT 奶......奶子??
    HLT
        13
    HLT  
       2017-02-27 23:26:06 +08:00
    @Zubin 吸起来。。没毛病!
    scnace
        14
    scnace  
       2017-02-27 23:27:50 +08:00 via Android
    @coderluan 就比较喜欢你这样的面试官…
    onevcat
        15
    onevcat  
       2017-02-27 23:39:20 +08:00
    好难...各种不会 =_=
    Sunnyyoung
        16
    Sunnyyoung  
       2017-02-28 00:27:23 +08:00 via iPhone
    @onevcat ……
    lhbc
        17
    lhbc  
       2017-02-28 00:32:08 +08:00
    面过近百人,靠谱率不到 5%
    kingcos
        18
    kingcos  
       2017-02-28 00:44:11 +08:00 via iPhone
    ……人心惶惶啊……今年还要去实习……
    感觉要学的太多了……
    ArthurHe
        19
    ArthurHe  
    OP
       2017-02-28 08:31:54 +08:00
    @elgae 貌似已经招够了,矮子里挑的将军。
    lj61785636
        20
    lj61785636  
       2017-02-28 08:38:22 +08:00 via iPhone
    惊现喵大
    ArthurHe
        21
    ArthurHe  
    OP
       2017-02-28 08:39:44 +08:00
    @YiYing
    *在工作之外,有没有利用技术鼓捣一点儿东西
    *最近有没有在学习、了解一些技术方面的东西
    *你是如何沉淀工作中的收获,沉淀学习到的新技术

    这些问题很好!
    issues
        22
    issues  
       2017-02-28 09:00:43 +08:00
    面试官不面倒你,怎么显示他牛 B 呢?怎么能当你的上级呢?
    ArthurHe
        23
    ArthurHe  
    OP
       2017-02-28 09:01:37 +08:00   ❤️ 1
    最后来个总结吧!

    猥琐发育,别浪!
    chenggoi
        24
    chenggoi  
       2017-02-28 09:25:12 +08:00
    我觉得面试考察的主要是面试者与面试官的缘分,缘分到了自然迎刃而解(逃)
    joeHuang
        25
    joeHuang  
       2017-02-28 10:02:10 +08:00
    曾经找实习的时候, 1 、 2 、 3 、 4 、 5 、 6 、 9 、 11 近乎于每个面过的大厂都会问。
    kenshinhu
        26
    kenshinhu  
       2017-02-28 10:27:03 +08:00
    Uiimage imageNamed 和 UIImage imageWithContentsOfFile 的区别是什么?
    答: imageNamed 有缓存, imageWithContentsOfFile 没有缓存, imageWithContentsOfFile 适用于大图
    MasterFlag
        27
    MasterFlag  
       2017-02-28 10:28:27 +08:00   ❤️ 1
    一个从业两年半的 iOS 的开发者的回答(面过人也被面过)
    第一题, NSOperation 、 GCD 线程管理的不同 API ,具体差别只能看文档才知道,不过基本只用过 GCD
    第二题,真心没遇到过,只能背教科书了
    第三题,加修饰符,原谅我记不住,大概两个下划线开头的东西吧
    第四题,设计模式,単例,工厂,适配器, MVC 也算吧
    第四题,内存管理,一句话,谁创建,谁释放
    第五题,我一直觉得 js 是世界上最难的语言,也最反人类(会被喷吗)
    第六题,只用过 msg_send , kvo 算吗?(真不知道),我觉得这东西跟 Java 的反射很像,但用起来更方便
    第七题,不知道
    第八题,没优化过,至于代码冗长,多长算长,我觉得我写的代码都不长(捂脸逃)
    第九题,我没用过 SDWebImage ,我猜让我写,也是写缓存,本地有了,就不下载,同时再加个内存缓存也是美滋滋
    第十题,多用户逻辑,是同时在线多个用户还是一个 APP 多用户切换,还是跟 QQ 一样多用户下都可以收消息,但只能操作一个用户
    第十一题,我自己做过,还可以实现无限轮播, scrollView+NSTimer 就好
    第十二题,新项目,难道不是先排工期么,另外, iOS 开发者在公司项目组根本就插不上话,我一直觉得自己是个局外人,根本不受重视,别笑,做安卓的你也一样
    第十二题,没 GitHub ,懒癌晚期。博客,看过喵神(@onevcat )的和唐巧大大的,开源项目,一样懒癌晚期

    ====================分割线===============

    从业两年多一点,渣渣专科软件专业毕业,英语渣渣,估计小学生水平
    为人不够努力,懒癌晚期,各种不务正业,羡慕嫉妒恨那些比我聪明还比我努力的人
    其实,很多程序员都是我这样

    很多时候企业抱怨找不到好的员工,求职者又抱怨找不到好的企业
    企业嫌弃面试者能力低,面试者嫌弃企业工资低

    这个世界上,任何领域的人才都是金字塔,企业也一样
    一个萝卜一个坑,多大的萝卜多大的坑

    企业招聘,先立目标,需要什么水平的人,再来说人合不合适,因为我发现很多公司招聘信息千篇一律,估计都是百度搜的吧,对待求职者也缺乏基本的尊重,可能只需要一个初级的程序员,但是要求也一样是 3 年经验,会 XX ,精通 XX ,但薪水却是呵呵,结果还抱怨招不到合适的人。说培训班扰乱市场,企业们又何尝不是,这一点相信很多初级程序员和毕业生们深有体会吧。那些花了过万块的学生培训后不说点慌连个面试都没有,我去年在北京,简历实话实说,一年半经验,结果呢, 2000 份简历石沉大海。那可是北京啊,全国 iOS 需求量最大的城市啊!一个巴掌拍不响,市场不是一方面的责任,很多时候,我觉得企业(更多是半大不大的中小企业)的责任更大。(此处不针对谁谁谁,这是说明这个现象)

    我面试没有固定的题目,看着对方简历,看到哪,问到哪(毕竟小公司)
    我更关注对方的反应能力,思维活跃度,而不是背题目的能力(很多培训班的老师会让学生背面试题,命中率超高,这算不上内幕了),不会 GCD ,还不是一个下午的事
    但是,要是不聪明,还骄傲自大,难以交流,估计很多知识也是一知半解
    再说最后一点,诚实诚信比什么都重要,我身边很多朋友都是培训班出来的,一样能挑大梁


    ====================分割线===============
    这是我第一次在这个论坛回帖,本来还想说些什么的,可是突然懒癌发作,不行,我快不彳
    HelloiWorld
        28
    HelloiWorld  
       2017-02-28 11:07:00 +08:00 via iPhone
    @MasterFlag 半懒癌患者回复一下,打了很多字,想想还是删了,道理太多说不尽,无论是对面试官还是求职者,唯"心诚"而已
    DingSoung
        29
    DingSoung  
       2017-02-28 11:22:25 +08:00
    去年招了三四个月的 iOS ,绝大部分都不太满意,极个别觉得不错的结果放弃了 offer ,最终放弃了
    对开发者要求还是很高的,要的并不是单纯的码页面的程序员

    但是还来了个培训老师,各种概念滔滔不绝,把我忽悠的,后来然 CTO 把它刷了。所以后来我们并没有的纠结在技术上面,更多的是看这个人有没有自己的思维,态度怎么样,是不是一个认真踏实干活、对技术有追求的人。
    DingSoung
        30
    DingSoung  
       2017-02-28 11:30:43 +08:00
    有一个面试者,是内部介绍过来的,然后面试的时候,比较高傲,不屑于回答,然后我问他最擅长什么,然后找几个比较刁钻的问题想让他回去,然后他不服输,还让我当场做出来给他看,囧。

    还有一个面试者,基础面的都还行,但是与我们预期的还有一点距离 我,然后让他先回去我们备选,结果他不服,赖着不走了,囧。
    wshcdr
        31
    wshcdr  
       2017-02-28 11:46:43 +08:00
    mvc 不属于设计模式
    shakoon
        32
    shakoon  
       2017-02-28 12:42:48 +08:00
    面过不少初级开发岗位的人(从外包商那儿采购人力),基本都是两年以下工作经验的,讲话不通顺、逻辑不强、抓不住重点是最常见的问题,介绍自己的项目经验和技能水平都说得不是很清楚,简直不明白这种人怎么都会被招聘进来
    expkzb
        33
    expkzb  
       2017-03-01 07:46:18 +08:00
    我面试是看缘分的,主要是聊得来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:30 · PVG 06:30 · LAX 14:30 · JFK 17:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.