考手写代码是否真的有意义? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuhuan66666
V2EX    Java

考手写代码是否真的有意义?

  •  
  •   yuhuan66666 2016-05-31 01:06:32 +08:00 11327 次点击
    这是一个创建于 3421 天前的主题,其中的信息可能已经有所发展或是发生改变。
    听朋友说有点面试要求手写代码,请问这样的真的有意义吗?
    61 条回复 &nbs;  2016-06-01 11:35:27 +08:00
    Cassandra
        1
    Cassandra  
       2016-05-31 01:13:50 +08:00   6
    有的有的。虽然无数工具可以帮你更正错误,可以测试代码能不能跑出想要的结果,可这些都是工具的思考结果,不是你大脑的。手写去掉了这些辅助,会实际考验一个人的思维能力,对代码的了解以及熟悉度。
    ltzliwe
        2
    ltzliwe  
       2016-05-31 01:29:26 +08:00
    xiahei
        3
    xiahei  
       2016-05-31 01:30:11 +08:00
    kofip
        4
    kofip  
       2016-05-31 01:30:23 +08:00   4
    手写代码,我搞不定,多少类库与方法,我就记得前面几个字符,然后依靠自动补全。
    zztemp
        5
    zztemp  
       2016-05-31 01:35:53 +08:00   2
    想当年手把手地教妹子手写代码……
    zhangfan
        6
    zhangfan  
       2016-05-31 01:45:43 +08:00   1
    @zztemp 老司机
    yNV71aaf0Wn56q9G
        7
    yNV71aaf0Wn56q9G  
       2016-05-31 01:50:09 +08:00   2
    高中时候学的政治历史各种高深的函数其实也没有意义。

    目的只是为了证明在同样的条件下,你有更强的耐力,更好的思维,比别人更优特秀,然后把高优质的教育资源投在你身上。

    反正面试都是老司机,公司说不定就想在同样条件下招个记忆好的,写字好的看的呢
    likuku
        8
    likuku  
       2016-05-31 01:50:11 +08:00   1
    觉得手写伪代码 /手绘流程 就可以了。
    ncisoft
        9
    ncisoft  
       2016-05-31 02:19:20 +08:00 via Android   1
    手写代码又不要求能执行,只是看基本逻辑(伪代码)和主要函数库是否用得熟练,特别是 C 还是能考出东西的, JAVA 就算了,只能当作伪代码来看参考
    cxbig
        10
    cxbig  
       2016-05-31 02:22:00 +08:00   1
    手写代码一般不是考校你对方法、类的记忆,更多是考校解决问题的思路。
    wdhwg001
        11
    wdhwg001  
       2016-05-31 03:31:37 +08:00 via iPhone
    想当年上课偷偷写 php 然后微机课抄到记事本上 U 盘带回去…
    后来,我对 php 的函数命名风格深恶痛绝。
    yuhuan66666
        12
    yuhuan66666  
    OP
       2016-05-31 08:06:02 +08:00 via Android
    @Cassandra 如果因为方法名拼写错误而被卡下来,那岂不是背离了初衷
    pH
        13
    pH  
       2016-05-31 08:20:20 +08:00
    @wdhwg001 不懂,其中有什么梗?
    @yuhuan66666 你可以简略的写伪码。或者和面试官说明这里是一个什么函数,我觉得这样可以把
    janxin
        14
    janxin  
       2016-05-31 08:35:20 +08:00 via iPhone
    Stupitch
        15
    Stupitch  
       2016-05-31 08:38:14 +08:00
    我觉得吧,只要面试者有等级证书或者相关履历就不用这么较真,只要让他写写解决思路和一些关键代码即可。如果面试者尚未有很强力的证书或者履历,不妨考一考,如果很过硬的话,反而会给自己加分不少。
    Bryan0Z
        16
    Bryan0Z  
       2016-05-31 08:39:55 +08:00 via Android   1
    曾经有次回家,想写 Java ,懒得下编译器 IDE ,找了个在线的编译网站,直接打开记事本开始写…那个痛苦的,但是是坑
    jeffersonpig
        17
    jeffersonpig  
       2016-05-31 08:43:11 +08:00
    大四那年有一次 C/C++笔试,当我发现我连 main 的参数列表都不确定该怎么写的时候就明白考手写代码是很有用的
    andrewliu117
        18
    andrewliu117  
       2016-05-31 08:45:27 +08:00
    有的,但是考题的答案不需要太多的库,要重点考思路和变成习惯
    odirus
        19
    odirus  
       2016-05-31 08:47:04 +08:00   1
    可以看出你是面向啥编程的,面向 Google ,面向 IDE 。。。
    xpol
        20
    xpol  
       2016-05-31 08:47:49 +08:00 via iPad
    大学的时候,上机课全部是事先手写号代码。 x86 汇编指令。
    mudone
        21
    mudone  
       2016-05-31 08:50:05 +08:00
    有。
    maomaomao001
        22
    maomaomao001  
       2016-05-31 08:51:05 +08:00 via Android
    @odirus 面相智能 IDE 编程 不对吗?
    手写,最多应该写个流程图。。。
    手写代码,你这些麻烦,老师看着更麻烦
    gccdchen
        23
    gccdchen  
       2016-05-31 08:51:24 +08:00
    shakoon
        24
    shakoon  
       2016-05-31 09:06:19 +08:00
    手写代码估计我会出一大堆语法错误,我能写的应该算是伪代码,但是算法是描述清楚了的
    adoyle
        25
    adoyle  
       2016-05-31 09:09:11 +08:00
    不说有句话,字如其人么....
    yellowV2ex
        26
    yellowV2ex  
       2016-05-31 09:19:09 +08:00   1
    当年在学校里,那时候还是 Flash5 的年代,写 AS2 ,因为上课实机操作的机会不多,那时候能在本子上写一个下一百层的游戏,还能脑部运行画面还能脑部 debug 。
    现在不行了,库那么多, objc 特么方法又臭又长没有自动补全完全没法写。我不知道是不是很多人都这样,好多代码段根本懒得自己写,直接关键词去 stackoverflow 或其他 blog 复制过来的,比如什么数字转中文大写啊,汉子转拼音啊什么的,自己再重新写一遍完全浪费时间啊。不过这么做时间长了细节不太记得是肯定的,需要再花时间整理思路什么的。

    不过据我所知,面试手写代码,主要考的是你逻辑思维算法方面的东西,公司不会那么傻逼去纠结你单词写的对不对吧。
    Neveroldmilk
        27
    Neveroldmilk  
       2016-05-31 09:20:53 +08:00
    呵呵,除非你的电脑能识别手写代码,否则一点意义都没有。
    Neveroldmilk
        28
    Neveroldmilk  
       2016-05-31 09:21:18 +08:00
    @adoyle 汪精卫和秦桧的书法水平不知道比你高到哪里去了。
    odirus
        29
    odirus  
       2016-05-31 09:36:28 +08:00
    @maomaomao001 不好意思,理解错了,原本以为是不提供 IDE ,而是只提供单机环境下的 文本编辑器。
    yuankui
        30
    yuankui  
       2016-05-31 09:42:04 +08:00
    手写 objective-c 啊,写死你。。
    wdhwg001
        31
    wdhwg001  
       2016-05-31 09:48:16 +08:00 via iPhone
    @pH php 巨大而又没什么逻辑的基本库函数名…
    jetyang
        32
    jetyang  
       2016-05-31 09:51:17 +08:00
    不会让你写涉及第三方库的代码,一般代码量不大,简单的比如:实现一个方法反转字符串,输入 abcd ,输出 dcba ;难一点儿的比如:前序遍历一颗二叉树。最复杂顶多也就 30 行代码左右了
    zealic
        33
    zealic  
       2016-05-31 09:52:15 +08:00   4
    Stackoverflow and Google Oriented Programming

    SGOP
    现在编程很大程度上都是,毕竟记忆能力是有限的
    我们可以理解为我们的大脑分为 内存、硬盘和工作缓存
    内存存最近几个月的项目和工作内容的细节
    硬盘存以前用过的技术信息的索引
    工作缓存存最近几天的工作上下文

    当需要切换项目和工作内容是,需要从硬盘读取大量索引,并通过大脑查询检索索引,再与外部搜索引擎通信读取信息并过滤,讲主要信息置换到内存中
    最后加载到工作缓存
    好了,喝杯茶开始工作吧
    jindian
        34
    jindian  
       2016-05-31 10:06:24 +08:00
    一般只会让手写小段代码实现一些算法, 目的也就是高效的筛选面试者
    SunnyCoffee
        35
    SunnyCoffee  
       2016-05-31 10:19:59 +08:00   1
    感觉像是潜水考验你的水下憋气一样。
    buptrobin
        36
    buptrobin  
       2016-05-31 10:32:25 +08:00   1
    首先,考手写代码不会去考很多类库的,所以不用担心什么库函数问题。
    但如果最基本的库函数都不会,那肯定是丢分的。
    一般都是考基本问题的解决,考思路以及实现是严谨性。
    有的就是考基本函数的实现,比如 atoi 这样。
    coddmajes
        37
    coddmajes  
       2016-05-31 10:39:05 +08:00
    我觉得还是很有用的,,,
    zog
        38
    zog  
       2016-05-31 10:51:43 +08:00
    对于想找个代码翻译器的员工有意义, 对于想找个解决问题的员工没意义. 面试更应该考察解决解决问题的能力, 信息检索能力.
    BUPTGuo
        39
    BUPTGuo  
       2016-05-31 12:07:42 +08:00   1
    不管有没有意义,不能手写代码基本是找不到太靠谱的工作的,除非你的项目实习经历很匹配
    chairuosen
        40
    chairuosen  
       2016-05-31 12:10:59 +08:00
    上机比手写好吧,起码要筛出一指禅
    mengzhuo
        41
    mengzhuo  
       2016-05-31 13:09:48 +08:00 via iPhone
    手写确实蛋疼
    面试时碰到过手写质数筛、 lru 、 floodfill
    wizardoz
        42
    wizardoz  
       2016-05-31 13:16:09 +08:00
    就好比说足球队招人考踮球有意义吗?比赛的时候踮球能踮得分?
    但是对一比较初级的球队来说(比如少年队),这个还是是很有意义的,原因不用说了吧。
    对于比较高端的招人,比如 C 罗和梅西的转会,就不会考查他们踮球。但是并不代表他们不会。
    msg7086
        43
    msg7086  
       2016-05-31 13:16:37 +08:00
    考手写代码的大多是大公司。
    人家年薪 100K 放在那,一个星期几十个人投简历,一个月光现场面试就有十几人,你怎么筛选人啊?
    给你个 IDE 一个 Google 一个爆栈网让你写代码,十几个人都能写出来,让你从里面挑 2 个你怎么挑?
    wshcdr
        45
    wshcdr  
       2016-05-31 14:11:49 +08:00
    对公司而言,手写代码是成本最小的筛选方式
    ilikekindle
        46
    ilikekindle  
       2016-05-31 14:26:00 +08:00
    也许将来会有人来提问:“程序员手敲代码是否有意义?”
    iamjs
        47
    iamjs  
       2016-05-31 16:30:33 +08:00
    有。。。前端 面试 简单 css 测试
    有 1/10 的人 margin border padding 写错。。。
    5/10 的人 radius 写错, moz ms webkit 写错
    jarlyyn
        48
    jarlyyn  
       2016-05-31 16:32:46 +08:00
    非常有意义。

    当然,如果是考拼写就没意义了。
    Cloudee
        49
    Cloudee  
       2016-05-31 19:00:42 +08:00 via iPhone
    就我面过的手写代码的面试而言,逻辑没问题的情况下,少量的拼错是没问题的,甚至不太清楚的方法还能问面试官,面试官当时拿电脑查了 javadoc 给我。但是写的递归出不来,边界条件下运行出错估计就要扣分了
    pH
        50
    pH  
       2016-05-31 19:02:03 +08:00
    @mengzhuo floodffill ?是啥。 LRU 是让你写一个实现的数据结构出来么?
    youKnowDai
        51
    youKnowDai  
       2016-05-31 20:15:09 +08:00
    mengzhuo
        52
    mengzhuo  
       2016-05-31 23:11:18 +08:00 via iPhone
    @pH 自己 Google 去
    lru 还要求无错 某头条的面试题
    对了 还有 n 叉树 dfs 找所有父节点 某雷的面试题
    蛤蛤蛤
    nomemo
        53
    nomemo  
       2016-05-31 23:17:56 +08:00
    你可以不会写,但有人会写就可以了
    然后招会写的
    maomaomao001
        54
    maomaomao001  
       2016-05-31 23:19:19 +08:00 via Android
    @odirus 可是,纯文本环境也和纸上写没啥区别啊~~
    没有只能 IDE 的时代~~无法想象能写大应用
    手写的话,算法,数据结构还行~~~ 大一点写在纸上太恶心了~~~
    msg7086
        55
    msg7086  
       2016-05-31 23:45:20 +08:00
    @maomaomao001 请搞清楚我们讨论的是面试,不是让你 20 分钟写出一个操作系统。
    我说个某位在 Google 的朋友给我 Mock interview 时候的题目好了。

    给一个包含若干英文单词 / 句子的字符串。
    比如 "Hello world boy"。
    逆序单词,但保持单词内的字母顺序不变。
    比如 "boy world Hello"。

    需要用到 IDE 吗?
    如果 Google 的面试题都不需要用到 IDE ,那别的公司我觉得应该也不需要用到了。
    janxin
        56
    janxin  
       2016-05-31 23:59:41 +08:00 via iPhone
    一般我都是要求先说实现原理,然后自己实现一下,当然也不会要求能编译通过。一个是基础到底是不是扎实,尤其是算法数据结构这些基础;另外一点是看从思路到代码的能力是不是过关。

    SGOP 这种我都是直接 pass 了
    matthewz
        57
    matthewz  
       2016-06-01 00:02:43 +08:00
    这都是 Google 之类的公司先搞出来的

    但问题是, 国外的 FLAG 题目很多都是不需要特别的算法知识, 比如贪心是纯粹拼智商.我反正真的一次需要高级数据结构的题目都没碰到过, 基本都是拼实现的题目, 动规, 递归.

    而国内各大公司出题简直丧心病狂, 听说 KMP 红黑都有, 根本不考虑候选人未必学过某些知识就出题. 百度之前考过三门问题简直神经的可以. 说白了就是中国人多, 爱咋出咋出都行, 反正也都是天天加班干苦工.
    incompatible
        58
    incompatible  
       2016-06-01 00:35:41 +08:00   1
    曾经面试一个小公司,手写 jdbc 写到面试官潸然落泪,说是面了这么多终于遇到一个靠谱的。
    之后我面试别人时也会加上这道题。

    Java 那么多 ORM 框架,刨根到底无非就是对 jdbc 的封装。所以面试时看对方会不会 jdbc ,基本就能看出来他刨根问底的 欲望有多强。
    mikegreen7892003
        59
    mikegreen7892003  
       2016-06-01 00:59:53 +08:00   1
    手写代码可以看看 coding 的基本功,思路是否清晰,做事是否认真,等等。

    coding 基本功:
    对代码的基本用法是否熟悉。比如 Python:

    def foo(one_default_dict=None):
    if one_default_dict is None:
    one_default_dict = {}
    balabala

    def foo(one_default_dict=None):
    if one_default_dict:
    one_default_dict = {}
    balabala

    def foo(one_default_dict=None):
    one_default_dict = one_default_dict or {}
    balabala

    我一般就会让面试的人手写一个默认值会是 dict 的例子,上面几种写法都说得过去。然后可以问问为什么这么写。经常写代码并且有思考的人,很容易说出所以然来。反之亦然。


    思路是否清晰:
    不同人写代码有不同风格。对于三五行的代码,有些人喜欢想好再写,有些人喜欢写好再改,都是 okay 的。
    而思路清晰的人,在这么短的代码里,能够比较容易看出自己代码的逻辑错误,所以基本不应该写错。


    做事情是否认真:
    程序员嘛,最重要的考核标准之一当然是写代码是否认真。而当场手写代码是最容易看出来的方式。


    顺便说,有些人抱怨自己有 9 分能力,却只能面试出 6 分,但别人有 3 分能力,却能面试出 9 分。
    而手写代码这回事,一般不会被高估。实际上会给大家一个更公平的面试环境。
    是骡是马,拉出来溜溜呗。都是程序员,手写代码谁怕谁呀~

    至于有些人认为 IDE , Google, StackOverflow 能够解决问题即可。
    我想说的是,对于有一年或者以上工作经验的人来说,手写三五行代码只是非常基础的能力。如果这点都做不到的话,很难让人相信能把大的模块做好。
    当然,最坑的是,这样的人挖的坑,谁来填,谁来填,谁来填!(因为他们往往看不出自己抄的代码到底哪里有问题。)

    当然,我这些观点都是作为面试官的角度来看。大部分公司都希望招到能干活能解决问题的程序员。考察手写代码是能够在最短时间内看出很多东西的方式吧。也许有所偏颇。
    顺便说,我就没见过学得会手写代码的人学不会用 IDE , Google, StackOverflow 解决问题。嘿嘿嘿~
    maomaomao001
        60
    maomaomao001  
       2016-06-01 10:31:59 +08:00 via Android
    @msg7086 这个 手写 IDE 写完全一样啊。所以,用纸的(相比于不用 IDE ) 的 尤特点在哪里???
    msg7086
        61
    msg7086  
       2016-06-01 11:35:27 +08:00
    @maomaomao001 如果照你说的「手写 IDE 写完全一样」,那么人家考手写不就好了。
    另外手写和 IDE 写代码的要求是不一样的。
    手写代码不要求完全无错,你可以写错单词,写错函数,这都无所谓。
    用 IDE 写的话就要求完全无错,程序要能直接运行跑出答案了。
    通常考白板题对面试者来说更简单。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     850 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 20:39 PVG 04:39 LAX 13:39 JFK 16:39
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86