登录
  • #美国面经
  • #码农类general
  • #面试经验
  • #工作信息
  • #求职
  • #攻略

最近半年面试上百个candidate以后的想法

SoporAeternus
16024
60
首先自我介绍一下

我是一个Sr SDE 目前在一个创业公司 我们公司主要是digiral healthcare/wellness 所以其实并没有收疫情影响

翻我以前的帖子可以发现 我在这个公司已经工作六年了

现在主要是tech lead + manager 这样的一个位置

我主要负责电面 还有onsite的system design round

今年二月到现在 我今天特意还查了一下 我已经面试过109个candidates 其中绝大部分为senior岗 形形色色的candidate我都见过 有15分钟用c++ bug free ace掉整个题的大牛 也有简历上天花乱坠四十分钟写了五行代码问我觉得怎么样的

正好看到w大公众号的文章 想到可以分享一下我作为一个面试官的看法 希望可以在这种困难时期帮到一些人

1. Introcution

Introduction 重不重要呢? 这个见仁见智 我觉得这个阶段 大概是一个可以不出彩但千万别出错的阶段

每个面试官的侧重点都不同 我个人来说 一般前10分钟 大部分时候是我在说话 主要介绍一下我自己 我的团队 还有其他一些team

我很少问一个人简历上的事 因为在我看来 你简历已经过了hr那一关 那我就不需要卡简历了 我也不太需要知道你过去做过什么 因为我这关的目的很简单 就是卡100分里面及格的60分 - algo knowledge / basic coding skills / problem solving / critical thinking

所以你简历再漂亮 最后也只是及格不及格(当然实际背后怎么考察 肯定比binary复杂的多)

那你可能问了 - 那我就不需要注意其他方面了吗

当然不是 像我刚刚说的 你解好题 也只是60分 你还需要拿到额外的达到80 85 才可能真的过去 (尤其是最近竞争非常激烈)

我现在说一下我觉得比较好的一些行为吧

首先需要自信大方

自信 体现在你的语速音量语音语调上 说话不要过快导致口齿不清 除非你对自己的口语及其自信 沉住气音量适中偏高都可以体现出你的自信不急促 反而是那些越想表现说话越快的 很容易让人看出是紧张

大方呢 比如有的candidate全程不开摄像头 就不太好 当然如果 你先开始打开摄像头 跟面试官问好 然后开始写题的时候 跟面试官说 你想关掉摄像头集中精力 我是百分百不会觉得有任何问题反而对你印象会很好

回馈

回馈很重要 很多时候我可能不停的说了10分钟 然后candidate一句话都没说 你可能觉得需要尊重面试官 但是能够在适当的时候插嘴有一些交流 会让我觉得你的性格和交流能力都不错 职场中也是需要互相讨论交流的 所以这部分其实很需要技巧 就是如何可以适当的交流而又不喧宾夺主

举个例子 我遇到过一个控场非常强的人 前15分钟 我恍惚间甚至有是我在面试的感觉 话语权完全被他掌控住了(该candidate不是cs出身在S大读的liberal arts 还是辩论队的..)这么做 如果你真的很厉害 那我可以感受到你的自信 但是我的expectation 会非常非常高 没人喜欢话多又没东西的人

对公司的了解和兴趣

本帖隐藏的内容需要论坛积分高于188才可浏览
点击前往一亩三分地论坛查看 >>


手机编辑的 格式就... 我也是想到哪写到哪儿 有病句看不明白的地方先凑合看吧 等我有空用电脑编辑一下

开个坑 反响好的话就继续更新

有什么想问面试官的 可以下面跟帖

我会不定期回答一下 或者集中常见问题然后更新在帖子里

补充内容 (2020-7-27 11:45):

来更新了

前几天看到公众号转载还挺高兴 本来想更新的 结果写到一半一亩三分地app崩溃

然后就啥都没了...

这件事情告诉我们什么 朋友们 ?

程序员写码也好 别的行业的编辑文档也好 一定要勤保存!常备份 !🙃

好了 不说闲话了 今天稍微讲讲 做题的部分吧 特别是算法题 以后有时间再讲讲system design

这个部分可能就比较纯CS 其他专业的朋友可以略过

声明一下 我分享的也只是我的一些看法 不同的面试官个人喜好肯定是不一样的 评论区也有一些面试官分享自己的想法 大家都看看 了解不同面试官的想法有利于让你面对各种情况

— 读题 —

解决一个问题 首先第一步是什么? 是搞清楚要解决的问题是什么

你可能觉得 “这不是废话吗 面试官告诉我题 我不就知道了吗?”

完完全全听清面试官说的每一个单词 不代表你完全弄懂了题

我看过太多人嘴上说着 明白了 明白了 然后在错误的道路上越走越远

直给的数学题算法题也好 实际问题也罢 核心都是一样的

面试官给你讲完题以后 问你 “明白了吗”

你应该怎么回答?

不假思索地”明白了”来表达你的理解能力满分?❌

你应该 停顿30秒钟 然后内心问自己“我明白了吗 我真的明白了吗?” 真正的思考一到两分钟

至少我个人 不会因为你对题目没有任何疑问而觉得可以加很多分

反而如果这个人会问问题 会问好问题 在我看来是很加分的

那你可能说了 那给我的问题就是非常简单的 我非要问问题会不会显得我很蠢?

It depends. 我并不是说 没有问题也一定非要搞出点问题来 问你一加一等于几 你问“加”是什么意思 那肯定是不对的 但是问问题是有技巧的 比如这样 —

“just to make sure that I got everything accurately - you want to me to ... blah blah blah”

没有任何一个面试官会觉得你问这样的问题是蠢(如果有 我觉得也可以不去了)

这叫什么?这叫搞懂需求

千万不要人家让你盖烟囱 你却挖了口井

另外比较推荐的一个小技巧是 正式开始之前 先在面试官给你的example的基础上 想一个新的example

这样你可以跟面试官确认 按照你的理解的output是不是符合题意的

然后可以多写一些test cases 这样在写每一个的时候 你的input and expected output可以跟面试官验证

而且作为一个面试官 其实是非常乐意看到这种凡事先写test cases的习惯的 可惜的是十个面试的里面可能只有一两个

至于用不用比如一些unit test的library 这个你自己决定 python之类比较容易写unit test的 时间允许的话 我觉得那肯定是更好了 不过一般hardcode一下也都可以了 还有一个交流小技巧就是 你可以一直跟面试官说 “我现在hardcode 一会儿时间够的话 我再写unit test” 这样绝对💯

总而言之 刚拿到题的时候 切忌不要急于表现 沉住气 慢慢来 我面试过的所有人里面 所有极少数是在时间上让我感觉到哇这个人好厉害 倒是经验越丰富能力越强的人 越会在拿到题以后花费更多的时间在纸上写写画画 真正工作中也是这样的 拿到需求以后的第一步永远不会是implementation

— 解题 —

具体怎么刷题 我就不说了 地里也有的是面经 我来讲讲我个人觉得大部分new grad可能不太注意的地方吧

首先 假如整个技术面试 一共是100分的话 分数在我这里 是这么给的

能把题写出来 - 60

算法达到职位要求 - 20

- 这块我说一下 同样一道题 除非是简单到只有唯一解法的 那么对于不同职位背景的面试的人 我在这方面的要求其实不一样的 但是鉴于看这个帖子大部分可能是new grad 不幸的是 那算法效率可能要求是最高的那个等级 不过一般来说 我觉得大部分medium的题都能做出来的话 就完全没问题了

所以用比较优化的算法把题解出来只能给你80分 剩下的 20分就要看你的一些思考的习惯 communication怎么样 还有 写码习惯

—- language —-

这个老生常谈的问题就不多说了 选你最熟悉的 我是不太理解为什么我总能遇到那种 选了一个明显不是很熟悉的语言的 怎么?非要给自己增加难度吗?

python万道这就不用说了 毕竟万金油

好读好写好看

—- naming convention —-

我建议 每个人现在去leetcode 看看最近练的几道题自己写的代码里面的命名 是怎么样的 能不能做到 就算不追随 convention 也要自己跟自己一致

什么意思呢?你选择python 然后全部follow PEP8 那肯定是绝对不会有错 你选择用camel case 我也不会觉得有啥问题 但是如果你一会儿camel case 一会儿snake 那看起来就很恼火了 程序员大部分多多少少都有点强迫症的 尤其是工业界各家公司自己都有自己的style guilde 所以很可能会对这方面很在意

—- variable —-

一定多用variable!

一定多用variable!

一定多用variable!

重要的事情 说三遍

我前几天跟帮朋友准备面试的时候 我是这么跟他说的 “只要一个东西你写了两遍及以上 那你就值得用一个variable来代替” 同样的 数字等各种hardcode的也要用constant

这些对代码的可读性以及容错度都非常重要 不是什么特别难改正的习惯 举个例子

你可能需要用到 “input[0]” 十次 那最好的方法是就是 ”name = input[0]” 这样有什么好处? 首先这样我看到代码我知道这个value是name 而且如果以后 我需要改 比如 input[1] 现在是name了 那我不需要记得在10个地方改

—- namings —-

变量和方程命名这方面 很多new grad都会忽视 但是在我看来 在面试中 命名好要远远大于注释好

最好的代码是不需要注释的

这句话也许有些极端 但是不无道理

命名的要求是什么?最主要的一点是 descriptive 你的代码里 是不应该有单拿出来没有任何意义的词来作为方程和变量命名的 什么x, y, I, j, item1 var1 key/value 能不用就别用

但是也别写的太长

descriptive下面的一个关键字 就是 concise 命名是个艺术 只能自己慢慢锻炼

可以多看看github上面比较受欢迎的项目 看看别人的代码中的命名 没事也可以把自己在学校写的代码拿出来 看看能不能在命名上看到自己的习惯和问题

看了我写的这些 你可能会觉得 怎么有这么多细碎的东西要注意 我本来就很紧张了 怎么可能还注意到这些 能把题目写出来就已经谢天谢地了

这些都是可以培养的习惯 一旦这种习惯养成了 那就会跟肌肉记忆一样 你写代码的时候自然而然不用费力就能关注到了 习惯成自然嘛

这些方面在我个人看来 是很会加分的点 也

是平常刷题过程中比较容易稍微一些就能练习到的

今天先写到这儿吧 想到哪里写哪里的话 我感觉我能一直写下去😅 而且我也不知道大家更想知道哪些 下次更新我就专门回答问题好了

欢迎下面留言讨论

有什么想知道的 或者想看我讲一讲的话题 也可以告诉我
60条回复
热度排序

发表回复