我觉得副项目工作和技术面试问题完全无关。 有没有办法将这两个结合在一起?

这取决于您正在从事的辅助项目类型以及所谈论的面试问题的类型。 在某些情况下,很有可能将两者混为一谈。 举例来说,可以说您正在为一个开源项目做贡献,例如Helix(分布式集群管理抽象)。 从事此类项目肯定会帮助您解决涉及规模的设计面试问题。 例如,如果您为Linux内核做出贡献,则意味着您最终将阅读大量内核代码,并且熟悉编程范例,技术和内核的基本骨架结构。 您了解了内核内部编程与用户空间编程之间的限制。 这肯定会帮助您回答与操作系统和系统有关的更多技术问题。 对于算法类型的技术问题,请考虑从事诸如Lucene之类的开源项目。 Lucene是一个自由文本搜索平台,可帮助您构建需要自由文本搜索功能的应用程序。 这个项目中有许多较小的代码段,这些代码段使用了非常聪明的技巧来高效地完成工作。 总而言之,阅读和编​​写开放源代码的最大好处是您的代码会得到大量审阅者,而您自己最终会阅读他人编写的高质量代码。 做自己的辅助项目本身可能会使用许多算法和其他领域。 例如,假设您要构建需要服务器组件的移动应用程序。 然后,您将花费大量时间在并发,扩展服务器,处理负载等上。 这是针对技术面试的理想方式吗? 可能不是。 当您不积极准备时,您可以努力做到这一点,而应将其作为日常习惯中养成的一种习惯。 这将使您保持敏锐。…

在编码采访中,大多数地方是在寻找代码正确性还是过程的更多内容?

我们通常需要逻辑上正确的解决方案,这些解决方案可以处理极端情况(例如零长度),并具有可接受的运行时间。 令人困惑的正确答案算作候选人。 语法不太重要,尽管当候选人认为自己最近在简历中广泛使用的语言的基本知识存在问题时,问题就意味着不诚实。 不记得很少使用的库函数(如果允许)的语法和参数顺序晦涩的话(这是可以的),这就是文档的目的。 我们为候选人提供帮助,使结果更好地适用于现实世界。 分享您的思想过程,以便您可以利用这一点,并且不要因为无法在面试官分配的时间内给出足够好的答案而失去职位。 产生正确解决方案的平均时间和最慢时间之间的差异约为3倍。 尽管这在行业中很好,但是一个需要花费一个小时的20分钟的问题并不适合45分钟的采访时间,因此我们提供了一些使问题更适合的指针。 没有时间进行两种实现,测试会揭示性能问题,因此我们向候选人介绍当他们踏上一条糟糕的路时。 同样,在测试会发现问题的地方,我们查询“有关此输入的内容”。 精心设计的面试问题对于称职的程序员而言从来都不是一件难事–只是一个健全的检查,即该人实际上按照自己的简历的建议编写了代码,并且他们具有足够的逻辑处理末端和边缘条件,因此他们的代码可能不会从质量检查中反弹(或客户)太多。 不能编写正确的10行函数的候选人在涉及产品规模代码时会变得更糟,而且不会被录用。

在Google面试之前,我可以在哪里免费获得模拟面试,或者如何获得一些模拟面试的经验?

接受诸如Google之类的科技巨头的采访绝对是一件很重要的事情,这才是真正决定您是否要在Google获得这份工作的决定。 考虑到关键面试(最初是至少在电话屏幕上)如何起着决定您对公司的适应性的重要性,因此,在进行面试之前,必须切实做好准备。 我建议您彻底阅读《破解编码面试》(2011年书籍)(CtCI)或《编程面试要素》(EPI)之类的书。 受到硅谷顶尖公司采访的一些人强烈推荐他们。 但是,一旦您准备好了技术性问题,就可以继续讨论可测试您的沟通,文化适应性和其他参数的问题,这些问题将使您确定自己是否适合该职位描述。 CtCI和EPI再次涵盖了这一点。 现在,我们进入准备工作主要部分的关键–模拟面试。 当您对自己的准备工作充满信心并且需要从局外人的角度测试自己的准备水平之后,通常会进行模拟面试。 相信我,这与整个技术准备本身同样重要,因为这是您开放自己并实际模仿实际面试的时候。 除此之外,这更像是试运行(如果可能的话,沙盒)。 您不会失去任何东西,而是会更多地了解实际面试中的自信程度以及如何向某人表达自己。 也许在准备过程中的所有这些时间里,您都是独自一个人,自己舒适地解决问题,而没有意识到有人会忽略或监视您的能力。 因此,我强烈建议模拟面试平台,例如对任何大型科技公司进行面试的模拟面试 。 这为您提供了有关您在面试中表现自己的方式的实时反馈(行为问题)以及面试官通常不喜欢在候选人身上出现的一些讨厌的表情。 他们还设置了一个小时的电话采访,这与您在其他任何技术采访中所看到的完全一样。 我个人认为,这在我如何处理问题以及实际上专注于面试中发生的更重要的事情上产生了影响。 它还教给您很多有关如何在那不那么长的45分钟面试时间中安排时间的信息,而这段时间只是一小会儿,而您却不幸地尝试解决了没有意识到时间的问题。…