前几天我去一家大公司(名字我就不说了,输入法公司)面试了一下,首先呢,我是一直做JAVA EE开发,也是做web项目比较多,给面试官看的简历上也是写了很多web项目,但是面试官一上来就是叫我写了两个算法题,其中两个算法题,是这样的,写一个二叉树的java代码实现。还有一个是写统计一篇英文简历当中出现的英文单词的次数,半个小时的时间。第一个,因为之前了解过数据结构,所以很容易就写完了,第二个的时候,因为考虑的问题很多,所以就写得有点慢,半个小时过去了,面试官来了,第一道题还是很满意的,但是第二道题,说是我的思路很杂,而且效率很低,对我的第二题很不满意。这时面试官又给我出了一个题目,说是罗列出在一个数组当中两个数的和是一个特定值M得所有的组合,要考虑时间复杂度和空间复杂度。这个时候我就晕了,说真的,在一些web开发上,根本就用不到什么算法之类的思想,用的最多的也是要考虑到系统缓存之间的影响。面对这一题时我自然而然想到,什么排列组合类的思想,还有在他的提醒下,我也想到了一个M-a=b然后判断b是否在这个数组中。然后又问我时间复杂度,和空间复杂度。说真的我真是不清楚,想到都是问这些东西,之前又没有准备。心里真的有点快放弃了的感觉。所以后来的表现不是很好。后来回去的路上想了想,要想在好一点的公司当中成长,我不能就放弃掉我自己不擅长的部分,也应该好好的了解其他的java相关的。说真的,之前一直在搞什么框架的搭建,怎么优化框架,发现这些真的在公司的面试中,基本就没有多人会问,最重要还是自己的就基础的java知识。所以说,在面试这一块中,面试官看重不是你做了多少东西,做的东西有多好,真正看中的是你的基础知识牢不牢固,你的基础知识会不会灵活的运用。这是我一点小小的感触,这几天憋在心里也挺郁闷的,虽然可能也没有多少人看,但是想说出来算是一种倾诉吧!
------解决方案--------------------
听君一席话胜读十年书,其实这些都是大学里面学的,但是真正出来工作以后如果不是做算法相关的基本上没有任何用处,不过楼主也不用灰心,每个企业需要的人才不一样的。就算你去牢固这方面的知识,说实话以后做这个可能用的上,不做这个我敢说不出一个月又得忘干净
------解决方案--------------------
应该是发散性思维吧。言之有理即可。我当初想的是1个杯子放5个,一个杯子放3个,然后一个杯子放2个+个杯子~。这样就5,5,3都是奇数了。但是我也不知道正确答案~