迅闻网
让更多人看到你

程序员怎么预备面试中的算法

春招季来临,咱们陆续现已开始准备面试斩获心仪offer。
这次lucifer就从面试官角度给咱们共享一些面试技巧,让咱们面试时少走弯路。这次共享侧重「算法面试」。
我担任公司的面试现已有5年以上了,底子都是初面和二面,因而技能面试的层面比较深,更多的是了解提名人的技能才能是否合格。在这几年时刻,我前前后后也面试了许多的提名人。这些人中有的技能才能不可,但也有些人很可惜,技能才能是能够的,可是却没能通过我的面试,为什么呢?
面试调查什么?
首要,通常判断提名人是否能够通过面试有如下几个规范:
技能能否担任
交流才能怎么
作业热心怎么
。。。
那么我面试的时分肯定也是围绕上面展开的,只不过侧重调查不同算了。
算法题和编程题实际上能够很好地查验以上信息,而不只是是查验「才能是否担任」。前提是面试官不能太死板,比方直接扔一个网上原题,有的乃至自己都不太会就拿出来考,这肯定是不可的。
有同学反应算法标题做出来了,可是却挂了面试。这又是为什么呢?
除了想当然的那种做的很好,实际上cornercase没考虑到或者不是最优解。还是有可能会被挂,为什么呢?
其实你标题做的很好,只是能够证明「才能能够担任」,这不意味着其他也满足要求,比方上面提到的交流才能,作业热心等等。
那么怎么更好地展现自己,给面试官留下更好的印象然后通过面试呢?除了提高自己的技能实力之外,办法也很重要。这儿我就总结了几个技巧给咱们。
算法面试底子过程
我在网上找到一份《InterviewCheatSheet》,这个PDF列举了面试的模板过程,详细指示了怎么一步步完成面试。
这个pdf最初就提到了好的代码三个规范:
可读性
时刻复杂度
空间复杂度
这写的太好了。
紧接着,列举了15算法面试的过程。比方过程一:当面试官发问完后,你需求先下来要害点(之后再下面写注释和代码)看完我的感触就是,面试只需按照这个来做,成功率蹭蹭提高。
pdf地址[1]
多问几次,保证标题了解正确。
比方输入输出,cornercase等等。试想一个搭档拿到需求不分青红皂白就去做,成果发现做出来的不对,多尴尬?你会想和这样的搭档一起同事么?
比方你能够问:
需求考虑负数么?
成果的次序重要么?
能够运用额外空间么?
。。。
先说思路,再写代码。
虽然标题了解没问题,可是可能思路底子不对,或者面试官不想要这个解法。
试想你是面试官,对面写了半响代码。思路底子就不对或者不是你想要的解法,是不是有点失望?
所以尽量先说思路,面试官觉得没问题再写,「不要糟蹋彼此的时刻」。

程序员
比方你能够说:
朴素的暴力的思路是:xxxx。而这么做的话时刻复杂度是xxxx。
朴素的暴力算法的瓶颈在于xxx,咱们能够运用xxxx算法进行优化,这样复杂度能够优化到xxxx。
上一过程给面试官讲思路的时分,代入几个比如。
cornercase和normalcase都至少举一个来说明。这样不仅让面试官感觉你交流才能强,并且能够帮助你进一步了解标题以及理清思路。
有点时分咱们面试比较严重,通过代入比如解说严重感会慢慢减少。就好像我做技能共享,往往严重的就是前面几分钟,后边就不会有严重的感觉了。
比方你能够说:
当输入为[1,2,3,4]时,咱们的先xxxx,这样就xxxx,接下来计算出xxxx,最终xxxx。
当输入为负数时,咱们能够直接回来xxx。
写代码要快,不要来来回回改,否则就会被扣上coding不可的帽子。
其实有前面的铺垫,写快不难。由于前面其实讲思路,通过比如解说法你现已对算法很了解了才对。
可是思路没问题不代表能够完好写出来。同样能够完好写出来不代表不需求涂涂改改。这需求咱们做标题前先勾勒出代码的大体结构。
一个简略的技巧就是:「分模块写代码,一个功用一个函数」。这样能够减少不断地涂涂抹抹,修修补补的可能性。
一个比如:
defsolve(nums):defcheck(mid):#dosomethingdefanother_func():pass#…l,r=0,len(nums)-1whilel<=r:
mid=(l+r)//2check(mid)
其间solve为主体函数,而check和another_func则为拆分的函数。
写完代码自己先写个测验。
这不仅表现了你代码习惯好,并且能帮你发现代码写的有没问题。
小技巧:你能够把前面你和面试官举的比如以及面试官给的比如代进去看对不对,由于有前面铺垫了,这个应该也很快。
一个比如:
defsolve(nums):defcheck(mid):#dosomethingdefanother_func():pass#…l,r=0,len(nums)-1whilel<=r:
mid=(l+r)//2check(mid)assertsolve([1,2,3,4])==Trueassertsolve([])==False#…
这儿咱们运用assert进行了断语。类似于咱们日常开发后对代码进行测验。
总结
最终给咱们整理一个流程图,方便咱们回忆,咱们能够把图存起来备用。

未经允许不得转载:迅闻网 » 程序员怎么预备面试中的算法
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页