数据结构算法面试总结 序

数据结构算法面试总结 序

         首先明确刷题目的:

1、  设法通过面试(中算法部分);

2、  逐渐运用于实际工作中,形成自身IT行业解决问题能力的”内功”;

第一个是必需达到,否则找不到一个好的工作,也难以达到第二个;而第二个事实上有更加重要的意义(注意也不会很长,用心的话就几个月就能发现且初步达到第二个)。个人认为既不要把这个事情看的太简单或就是应试前突击搞搞,也没必要看的太困难神秘。

就面试题说面试题,我个人感觉的不同类公司的算法面试方式是:

1、  面试题难度相当于leetcode中等及以下;

此类公司往往是一些规模中小公司或小公司,或者是岗位技术要求一般/录用人较多+流动性较大导致门槛放宽的大公司,简单说就是招人稍显困难或比较困难;普遍以教科书式算法题、leetcode中等及以下的原题的形式出现;另外一个特点是,相对于算法,更重视常规数据结构原理的掌握的考察;总的来说其考察的目的,不是看面试者水平有多高,而是看是否达到其录用下限;

2、  面试题直接出leetcode中等及以上原题:

此类公司可以包括两类,但大体情况相近;一类是中型公司核心部门,一类是大公司的中等包括一定程度上的中上等部门;往往以leetcode中高难度原题出现,喜好出各式leetcode易错题、递归题、及作为进而优化方式的动态规划的leetcode原题,事实上因面试官自身视野、水准,以及岗位HC的利用效率招聘速度的原因,难以或不会问出一些更合理的考验面试者实际的理解、运用、快速反应方面的能力的题;

2.5、面试题大致同2,但会引申出如”时空复杂度、引申出其他问题”:

此类公司往往和2相同,之所以单列出来,是因为往往这样的面试官是一个知识水平、工作方式乃至做人方式,比较靠谱有一定可信赖度,面试中能够比较自然的通过一个问题引申出相关问题,说明面试官至少这部分知识在其自身是相对比较系统的,这也能一定程度反映出其自身水准;

3、  面试题以较开放的题出现:

此类公司往往是大公司核心部门、国内外独角兽、互联网外企的出题方式,往往通过一个题,主力考察面试者在面对一个开放性问题时,是否能够且快速的映射到用数据结构算法找到能解决该问题办法的思路,同时再考察代码实现能力;

首先考察的就是数据结构算法理解的深刻程度,不达到一定程度的理解,难以达到面试现场运用或者说随时运用;同时能够手写代码实现以考察其代码编写能力,这类题往往无论题本身还是题解只是数组、链表、二分、哈希等非常常见的数据结构或算法,并非很复杂的数据结构或者很复杂的算法,也不一定只有一个唯一的正确答案,或者有不同思路的解决方法,或者是同一解决思路下有多种实现方式;

这类面试题及其公司言必称考察面试者”聪明程度”,实际上考察的是面试者的数据结构算法的理解的高度以及进而的运用能力,能否针对实际问题做出快速的反应;对绝大部分人来讲,这个能力的达到依然是通过反复训练熟练进而逐渐融会贯通,也就是说依然可以通过刷题方式不断接近达到超越的过程;

一定程度来讲,这类面试题确实能更有效的分辨出面试者在数据结构算法方面的积累沉淀;另外这类公司应聘者排大长队,这也是他们找到较优候选人的方式(或者说快速滤掉他们认为不优秀的);

4、  面试题以ACM竞赛方式出现:

尚未遇到过。这类公司应该难以存在,或即便存在也不具备选择它的意义;不论从公司/部门的成败发展,还是个人职场发展,至少从技术、业务上来讲(职场发展也不仅是技术业务)需要的是,相对比较有前途的业务下,较为清晰正确的方向目标下的发展(的环境或所谓氛围),及相应的合理快速的解决问题,而不是炫技、天马行空浮想联翩之类;

我个人认为的对策:

1、  刷题:多刷(最少200道左右,其实也不一定,理解到感觉到位了的程度即可),首先要达到基本的数据结构、算法的原理的掌握,同时通过刷题达到一个初步的运用的能力;

2、  总结:多回溯和归纳总结,先有意识的让刷过的东西,逐渐形成为一个固化的学会的东西;

3、  逐步在日常运用:也许日常解决一些问题时,主动试图多用一用,用上了能够获取成倍的提升;

4、  面试:实战中不断发现问题再反过来有方向的优化;包括业余时间参与下如leetcode的比赛之类;

5、  交流:交流很重要,不论是听别人讲,还是感觉自己会讲给别人,都能达到有责改之无则加勉的增进效果,好友间交流、QQ群微信群微博等交流方式都是不错的方式;

总结:出道甚至刚出名时并非以脚下技术著称的德国著名前锋克洛泽,为弥补脚下技术的不足,在家里没事就用球踢随处的小物件,以练习准头,后来他在场上的传球射门准确率逐渐越来越高;我个人认为如果认真对待,大约需要3-6个月的业余训练应该总都可以达到。

你可能感兴趣的:(数据结构算法面试总结 序)