Java程序员面试技巧总结+19年java面试资料+0基础学习资料分享!

moodytong 2019-02-16

闲聊

在深入代码之前,大多数面试官喜欢聊聊你的背景。他们想知道:

  • 你对编码认知。你是否知道如何编写好代码?
  • 个人能力/领导力。你是否经历过整个工作流程?你是否修复过并不怎么正确的东西,即使你并不需要这么去做?
  • 沟通。和你交流技术问题是有用的还是痛苦的?

你应该至少说明以下中的一个:

  • 你曾解决的一个有趣的技术问题
  • 你曾克服的一个人际冲突
  • 显示领导力或个人能力的例子
  • 你曾在以往项目中做出的贡献
  • 最喜欢的语言的一些琐事,对这种语言你做了什么,以及你不喜欢它哪里
  • 有关公司产品/业务的问题
  • 关于该公司的工程策略(测试,Scrum,等等)

热爱技术。表达你对你所做的一切感到骄傲,你对自己的选择充满自信,你对语言和工作流有着自己的看法。

闲聊

在深入代码之前,大多数面试官喜欢聊聊你的背景。他们想知道:

  • 你对编码认知。你是否知道如何编写好代码?
  • 个人能力/领导力。你是否经历过整个工作流程?你是否修复过并不怎么正确的东西,即使你并不需要这么去做?
  • 沟通。和你交流技术问题是有用的还是痛苦的?

你应该至少说明以下中的一个:

  • 你曾解决的一个有趣的技术问题
  • 你曾克服的一个人际冲突
  • 显示领导力或个人能力的例子
  • 你曾在以往项目中做出的贡献
  • 最喜欢的语言的一些琐事,对这种语言你做了什么,以及你不喜欢它哪里
  • 有关公司产品/业务的问题
  • 关于该公司的工程策略(测试,Scrum,等等)

热爱技术。表达你对你所做的一切感到骄傲,你对自己的选择充满自信,你对语言和工作流有着自己的看法。

说话不要不经大脑。不要自信地将答案脱口而出。如果是正确的,那么你还是需要时间来考虑如何解释,如果是错的,那会显得你冲动鲁莽。你不是在和人比速度,而且你这么做更有可能因为打断她的话或者妄下结论而惹恼她。

摆脱困境

有时候你会陷入僵局。放松。这并不意味着你已经失败了。请记住,面试官通常更在乎的,是你能否巧妙地从几个不同的角度去揭示问题,而不是一根筋走到底地坚持正确答案。

画图。不要浪费时间在脑袋里思考,可以画到板上。画出几个不同的测试输入。画出你如何手动如愿得到所需的输出。然后想想将你的方法转换成代码。

解决问题的简单版本。不知道如何找到集合中的第4大条目?那么想想如何找到第1大条目,然后试试能否沿用这种方法。

写一个简洁低效的解决方案,然后对其进行优化。竭尽全力。尽一切可能的方法得到某种答案。

讲讲自己的思路。讲一讲你知道什么。讲一讲你认为什么可能工作以及为什么无效的原因。你可能突然会意识到它实际上是可以工作的,或修改版本是有效的。也有可能,你会得到提示。

等待提示。不要用期待的眼光盯着面试官,但可以有短暂的“思考”时间——面试官或许已经决定给你个提示也说不定呢,等待她的提示以免打断她。

考虑空间和运行时的界限。如果你不知道你是否可以优化解决方案,那么就说出来。例如:

“我必须至少看看所有的条目,我做不到时间复杂度比O(n)还好的了。”

“蛮力方法才能检验所有的可能性。”

“答案将包含n^2数据项,所以我必须至少花费N^2的时间。”

写下你的思路想法

凭空地想很容易自我矛盾。把你的想法写下来,然后再去考虑细节。

调用帮助函数,继续前进。如果你不能或多或少地马上想出如何实现算法,那就跳过它。写一个命名合理的调用函数,例如:“this will do X”,然后继续下一步骤。如果帮助函数非常微不足道,你甚至可以将它忽略。

不要担心语法。不妨一笑而过。如果你非要考虑语法,那就还原到英语。只要向面试官说明稍后会回来整理即可。

预备足够的空间。你可能后面会想要在代码行之间添加代码或笔记。从白板的顶部开始写,并在每一行之间留一条空白。

最后写一个重头检查的标志。不要担心你写的for循环是否应该有“<”或“<=”。在代码的最后画个勾选提醒自己最后再检查一遍。先按自己的思路走。

使用描述性的变量名。想名字需要时间,但可以防止你忘记自己写某段代码的目的。使用names_to_phone_nums_map而不是nums。在名称中说明类型。返回布尔值的函数应该以“is_ *”,保存列表的Vars应该以“s”结尾。标准化很有意义。

完成之后的整理

浏览解决方案,大声地讲,输入一个例子。当程序运行时记录下变量保存的值——如果你只是记在脑子里,不会让你赢得任何加分。这有助于你发现bug和消除面试官的困惑。

寻找差一错误。你的for循环是不是应该使用“<=”来代替“<”?

测试边缘情况。措施包括空集合,单项目集合或负数。加分点:提一提单元测试!

不要惹人厌烦。有的面试官可能并不在意这些整理步骤。如果你不确定,可以这样说,“我通常会检测一些边缘情况——那么我们接下来是不是做这个呢?

java学习资料:

Java程序员面试技巧总结+19年java面试资料+0基础学习资料分享!

java面试题资料

Java程序员面试技巧总结+19年java面试资料+0基础学习资料分享!

java0基础学习资料

Java程序员面试技巧总结+19年java面试资料+0基础学习资料分享!

java0基础学习资料

Java程序员面试技巧总结+19年java面试资料+0基础学习资料分享!

java学习资料

最后,想学习JAVA 的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的学习资料!

相关推荐