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

面试到底在考查哪些东西?

  •  
  •   LeoQ · 2019-03-19 10:54:56 +08:00 via iPhone · 4184 次点击
    这是一个创建于 2081 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为不是科班出身,最近面试被问到计算机基础的时候总是很苦恼,比如 HTTP 状态码代表什么意思,防止跨域请求到底是哪里做的,后面还问了如何防止两个用户同时修改同一资源的时候资源加锁的问题。

    以及 python 的异步高并发(说白了就是 tornado,回来看了 tornado 的文档我估计他想让我答的就是这个)

    最后按照惯例还是来了个算法。

    所以面试究竟在考查哪些东西?为什么要考查这些东西?到底是如何考查的?怎么确认面试者就一定不懂 /懂这些东西?

    就我的归纳,面试大概是这些问题:

    1. 计算机基础这一类,因为 python 和 java 不太一样,涉及到的内存管理,垃圾回收之类的不多。
    2. HTTP 协议方面 HTTP 规范,各个 header 的含义,状态码意义等
    3. Python/对应语言的语法,我遇到过问装饰器的用处,yield,还有字符的翻转方法,class 这种继承什么的很少,我经常用而且还很好用的 @property 用法反而从没见过。
    4. 性能优化方面,多线程,异步,协程的框架,Python 的话比较著名的 tornado 和 asyncio
    5. web 框架方面,比如实现某个接口如何实现,用框架的哪个组件实现,用 middleware ? decorator ?
    6. 算法方面。

    面试官为什么要问这些问题?答案很简单就是要给公司招来能干活的人。

    面试官怎么样确认这个人就能干活....?

    😳我仔细想了想,这些文档里的问题答不上来的人,有可能也能干活,但是如果这些文档里的问题能答上的人,是一定能干活。
    20 条回复    2019-03-20 12:56:59 +08:00
    quizer
        1
    quizer  
       2019-03-19 11:19:12 +08:00   ❤️ 2
    1. 面试不是考试,考试是数理化全部都考,但是面试不会这么全的,都是为业务服务。抢购业务的一般会问你很多并发的问题,业务数据量大的一般会问些数据库相关的问题。所以面试官会问什么取决于你应聘的公司的具体业务,不然就是“专业不对口”了。
    2. 大部分人都会用工具,但是却不了解这些工具的底层原理。虽然正常情况下并不会影响干活,但是一旦出现 bug 或者产品的一些定制化的需求的时候,由于没有看过源码,只能束手无策或者耗时太长。
    3. 还有一些东西感觉这辈子都不会用到,但是面试官问你主要是考察你的学习能力,举一反三、触类旁通。这些能力应该是在学生时代就应该有的习惯,它们会提高你的自觉性和自驱动性。
    LeoQ
        2
    LeoQ  
    OP
       2019-03-19 12:04:55 +08:00 via iPhone
    @quizer 谢谢指导,我对源码的认识现阶段不是特别的会特意看,在文档不全或者文档和实际不一样的时候会去看代码里具体怎么实现的,也会看到一些有趣的实现方法,但是这种情况终究是少的,大部分的文档都很全面,甚至会在文档里描述代码是如何实现。

    对于学习能力和自驱动能力这块,我个人其实不太明白,工程师应该有一些前瞻能力,看到一些方向,但是说真的现在的新东西实在是太多了,学习新东西还是有一些驱动的,比如性能不够了,去学高并发,有耗时长的方法,去学异步。那这个可以叫做说“自驱动”吗?
    chenjinxinlov
        3
    chenjinxinlov  
       2019-03-19 12:21:23 +08:00
    你既然知道会问那些问题,为什么不把那些问题弄会呢。就跟高考一样,大家都知道考试的范围,有人考的高,有人考的低,那就是差距。
    NoahVI
        4
    NoahVI  
       2019-03-19 13:26:51 +08:00
    @chenjinxinlov 可是有些概念你很久没用也会忘记。
    xiaozaiziwyt
        5
    xiaozaiziwyt  
       2019-03-19 13:30:29 +08:00 via Android
    对于半路出家的,刚开始基础知识本来就是个无底洞吧。。。
    LeoQ
        6
    LeoQ  
    OP
       2019-03-19 15:02:33 +08:00 via iPhone
    @xiaozaiziwyt 是有这种感觉的,实际上我在工作上问题都能解决的,但是基础知识,问我一些概念化的东西有点难答上来。

    而且总有种无用的感觉,知道这些知识又如何呢,能帮我解决哪些挑战呢……
    nfroot
        7
    nfroot  
       2019-03-19 15:38:58 +08:00
    有时候这些基础性的东西是用不上的,或者用得上但是极少。。。。。但是当你要规划新的东西的时候,基础知识就决定了未来的宽度和高度。当你遇到疑惑的时候,通过你对基础知识的了解,你就会很清晰的了解细节,当有人自己基础知识不足时提出一个观点时,你可以轻易的发现它是对还是错。

    但是基础知识并不好学啊,太广泛了。补起来会有点茫然的感觉。
    LeoQ
        8
    LeoQ  
    OP
       2019-03-19 16:12:20 +08:00 via iPhone
    @nfroot 可以麻烦你举个例子帮我了解一下基础知识在实际工作中发挥作用的例子吗?

    我对这一点的体验比较少,更多的体验是,因为代码复用和模块化不够的原因,导致一点点需求都需要很大的改变,导致项目很难进行下去,在我看来这些是在实践中的日常困难。
    我的理解高级语言的目标就是让程序开发人员可以专注于逻辑和算法部分。

    但是不得不承认工作中确实是有些奇怪诡异的问题,但是遇到这种问题再开始看源码,原理,我觉得也不算迟吧……

    希望你能理解,我本意不是杠你,我只是很想知道,高级工程师为什么成为高级工程师.....
    dabaicai125
        9
    dabaicai125  
       2019-03-19 16:23:07 +08:00
    一面:基础、开发框架、项目经验、学习和解决问题能力
    二面:框架、项目经验、解决问题能力、综合能力及项目管理
    HR 面:文化匹配度及薪资期望等
    LeoQ
        10
    LeoQ  
    OP
       2019-03-19 16:29:53 +08:00 via iPhone
    @dabaicai125 谢谢你的回复,我想知道贵司是如何在短短几个小时的时间看出应聘者的学习和解决问题的能力的。在我理解中这个能力点比较虚,你是如何看准了这个人就有岗位要求的学习和解决问题的能力呢?
    dabaicai125
        11
    dabaicai125  
       2019-03-19 16:33:21 +08:00
    @LeoQ 主要会根据一些实际的案例来了解候选人的优点
    carlclone
        12
    carlclone  
       2019-03-19 17:27:48 +08:00 via Android
    最后一句话不是回答了你自己的问题嘛?就是排除小概率事件嘛
    wxkvEX
        13
    wxkvEX  
       2019-03-19 17:57:24 +08:00 via iPhone
    楼主工作不到三年吧……
    xiaozaiziwyt
        14
    xiaozaiziwyt  
       2019-03-19 20:04:03 +08:00 via Android
    @LeoQ 可能搞架构的需要吧。。。可架构又有几个人是呢? 其他行业的应聘反而没这么麻烦。。。
    Allianzcortex
        15
    Allianzcortex  
       2019-03-20 00:32:59 +08:00
    楼主不是这个道理啊...虽然进去可能就是拧螺丝,但现在这么多人都会拧螺丝,就增加筛选门槛找一个会造飞机的进来。就和高考一样要设置区分度,前些年谷歌流行出智力题现在改出 Leetcode,原理是一样的。另外很多基础知识还是挺关键的,"know your subject people "
    wizcas
        16
    wizcas  
       2019-03-20 01:17:40 +08:00 via Android
    如果只会一些表面工具的应用,不了解基础原理,那么遇到问题可能要花 10 倍的时间去解决。这样我当然要招懂原理的人了,单位时间内的产出会更多。而且基础知识扎实的话,如果用到了新技术、新思想上手也更快,对公司的技术发展更有利。虽然不懂这些可能也能干活,但是二者相较我更相信基础扎实的开发者的工作质量。毕竟像你说的,短时间内我需要进行判断,这个就是个很重要的指标。

    考算法是为了检验你是否具有编程思想,对资源占用和效率是否敏感。一个简单的字符串翻转就能看出你有没有对执行效率和空间占用的基本认识。这些算法虽然不一定在工作中会直接用到,但是思想是会被贯彻到你的成果中的。一些很诡谲的算法题我也不喜欢,面试也不会出。

    相比之下框架使用类的东西我在面试时倒不会太深入问,大概了解一下确定和你简历里的描述相符就好了。毕竟只懂使用框架相当于做填空题,真有一天要写个作文,实现个框架没有的东西怎么办?
    cmqwan
        17
    cmqwan  
       2019-03-20 07:23:42 +08:00 via iPhone
    我记得以前看马士兵的视频,里面的例子就很好。

    比如一个包子铺要雇 10 个师傅做包子。

    这时候应聘的就 6.7 个,能搞成正常的包子,基本就都要了。

    如果呼啦来了 200 个师傅,这时候怎么区分?
    一本一下的往旁边站一站;
    三年经验以下的往旁边站一站;
    不能捏出 18 个褶子的往旁边站一站;

    这时候还有四五十号人,在想个其他办法:

    面皮各种材料的优缺点;
    各种材料在什么温度下口感最好;
    等等。。。

    最后,看眼缘。

    说穿,供求关系决定
    nfroot
        18
    nfroot  
       2019-03-20 10:58:32 +08:00   ❤️ 1
    @LeoQ
    我不是程序员,在我的工作场景里,我曾经有和你相似的疑问。
    我也很赞同你的想法“高级语言就是让程序员更高效”,毕竟学高级语言干活可以直接出东西,如果从 cpu 原理开始一层层了解,那怕是很长时间内都基本做不出东西。。

    以我的理解来说,系统性的学习,由浅入深,但是浅的时候直接就能做出东西,这样很高效,但是代码和处理问题未必是最高效的,遇到问题的时候,遇到有人在代码里秀语法秀正则表达式的时候会郁闷的。不过相信你也工作了不短的时间所以一般的应用肯定没问题了。

    但是又有另外一个问题了,你懂,我了解,但是别人也懂,明白了吗?市场饱和了,程序员太多了,招聘方会很纳闷,大家都懂,那我得招哪个?那就最简单的,同价格里技术最好的。

    技术这东西往往没办法用尺计量,所以才会有各种各样的工作用不到的东西拿出来考面试者,毕竟一个个去深入了解也是很费时费力的。



    另外就是你说的“高级工程师为什么是高级工程师”,在我这个行业里,高级工程师意味着你的知识体系未必是最丰满的,但却是最专业的。
    初级,能干活,能出东西
    中级,熟悉工具,出东西快
    高级,啥都靠谱

    但是市场决定了,当高级人才太多的时候,中级的人才会更多,初级的更多更多,所以必然是能选高一点就高一点了,所以一般是凭你的证,凭考你。
    nfroot
        19
    nfroot  
       2019-03-20 11:06:03 +08:00   ❤️ 1
    @LeoQ 我没办法给你一个案例,因为在我的行业里和程序员圈子不一样。我的行业是这样的。

    自以为入门了的,觉得自己啥都能干,可以了,以为其他人也这样
    入门了的,觉得自己似乎啥都能干,但是有这样那样的限制,高级的东西手头又没有,想买公司又不够预算。
    中级的,觉得自己大部分都能干,但是公司好像还是预算不够发挥,尽力吧。
    高级的,觉得自己啥都能干,可以了,要是公司预算再多一点就好了。

    以上不一定正确,但是估计差不多。
    Loner233
        20
    Loner233  
       2019-03-20 12:56:59 +08:00 via Android
    为啥我面试上来就被问职业规划,我被问懵逼了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1618 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:02 · PVG 01:02 · LAX 09:02 · JFK 12:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.