每次为准备“ Java开发人员”职位的面试做准备时,我都知道,一个具体的准备计划确实会对我有帮助。 因此,他们的所有笔记都在采访过程中积累,因此决定进行结构和发布。 我希望有人会觉得这个计划有用。
而且,我故意不写这份培训计划的对象:对于高级,中级或初级开发人员-一切都取决于特定的职位空缺和雇主的要求。 因此,请依靠此计划,但是过滤器同时不要将其作为详尽的指南。
- Java核心 。 在这里,您可以集中精力阅读“ OCP:Oracle认证专业Java SE 8程序员II学习指南:考试1Z0-809”一书,以准备获得专业级别的Java认证。 有类似的书《 OCA:Oracle认证Java SE 8初级I程序员学习指南:1Z0-808考试》,适用于助理级别-您也可以查看。 浏览目录,并突出显示自己可以重复的内容。 当然,您不应该全神贯注地阅读本书的封面,因为本书的许多主题都可以绕开,例如日期格式。 突出最基础。 例如,对我来说,这些是以下主题:集合(标准问题“ HashMap的排列方式?”或“ LinkedList和ArrayList之间的区别是什么?”,在访谈中也经常问到),泛型,函数接口,多线程(这里也有过滤器-您不需要循环屏障和分叉联接框架)。
同样不要忘记将知识投射到您的经验中。 例如,您什么时候必须使用多线程编程? 您解决了什么问题? 您使用了哪些锁?
- 多线程。 我仍然在单独的段落中突出显示该主题-因为上面的书没有解释什么是volatile,锁和等待/通知。 如果您以前从未使用过多线程编程,请诚实并在面试时讲话。 但是,例如上面列出的一些事情,至少可以从理论上了解是个不错的主意(尤其是我几乎每次面试时都会问的“波动是什么?”这个问题)。
- 演算法 本主题不仅与Java开发人员有关。 不太可能会要求您编写任何排序算法。 面试官不希望知道您对合并排序代码的了解如何(他很可能只会要求您说出一般性原则)。 但是,解决算法问题,评估解决方案的复杂性或例如用语言解释深度搜索的原理是一种可能的选择。
- 数据结构。 一棵树与图有何不同? 什么是AVL树? 堆栈与队列有何不同?
关于Java:Java中的哪些类实现堆栈或队列? LinkedList与ArrayList有何不同? 什么是哈希集? 它与TreeSet有何不同? HashMap如何工作?
这些和类似的问题很可能会被采访。 但值得注意的是,有关树和图形的问题很少出现在访谈中-这些结构在实践中并不经常使用。 而是,您应该对先前使用的内容有充分的了解。 不知道还是没有使用红黑木? 所以告诉我,你什么都不知道。
- 资料库 关系和非关系。 有什么区别? 什么以及何时使用?
如果我们谈论关系数据库,则重复这些数据库的所有对象:表,视图,索引。 重复sql-查询的构建方式,存在的联接类型以及与何处不同。 还要分别重复事务-隔离级别,ACID属性。 记住,您是否曾经遇到过查询优化的案例? 您是否必须查看查询执行计划?
也不要忘记重复jpa(如果空缺时需要此规范)。 什么是实体经理? 什么是持久性上下文? 等等,我必须面对的。
- 构架 您需要重复哪些框架取决于特定的空缺。 在大多数情况下,需要使用Spring。 然后不要忘记重复Spring的一般工作原理,即初始化bean的步骤。 回忆一下您使用了哪些Spring框架(例如Spring mvc,Spring安全性,Spring数据)以及原因。 重复主要注释(不要忘记限定符,主要和有条件的注释-他们特别喜欢经常询问它们)。 并且不要忘记bean作用域。
另外,我想谈一谈“事务处理”注释。 她如何工作? 可以在其中另外配置什么?
- JVM设备。 什么是堆和栈? 对象如何存储在jvm中? 什么是字符串池? 是什么提供了发生过的原理? 垃圾收集器如何工作? 尽可能重复-不会多余。
- 模式 无需开车-无需列出所有现有模式。 但是有些需要用在Java或Spring中的知识(例如Immutable,Singleton,Prototype,Builder,Proxy,Abstract factory,Wrapper)。
- 算法问题。 他们经常在面试中要求解决特定问题。 如果是Skype采访,有时在纸上,有时在黑板上,有时在特定站点上。 准备编写代码而不使用您喜欢的开发环境。 也练习解决难题,例如在Leetcode上 。
- 网络。 重复OSI模型级别。 并且不要忘记重复一些主要协议:tcp,udp,http,https。
- 建筑学 SOLID,服务发现,消息队列。 何时使用微服务,何时使用整体服务? 您使用过尤里卡或领事吗?
- 其余的。 敏捷,Git和Gitflow,REST / SOAP,Linux(如果您使用过),Docker和Kubernetes(如果您使用过)。 并进行测试-功能,集成和单元。 谁写道,他们使用TDD有什么区别?
- 英文 仅在需要时。 当然,不要重复英语语法规则。 只要训练一下就能告诉自己,就可以记住一些预先准备好的短语。
- 对我自己 准备回答以下问题:“您在工作中必须解决什么有趣的问题?”,“告诉我们您最引以为豪的问题。”,“告诉我们您的成就。”,“告诉我们您的失败”,“如何教育自己?” ,“为什么他们离开以前的工作地点?”。 如果您有自己的项目,文章或演讲,请务必讲述一下。 他们对这些东西非常感兴趣,并且一定会要求提供更多细节。
另外,请务必准备公司的问题。 在要点上突出显示对您重要的要点。 在habr上有
关于它的精彩
文章 。
我会给自己一些建议。
我个人总是将前两次面试作为培训。 也就是说,通常这些是我最不感兴趣的公司。 这些采访只需要进入节奏,而不必害怕随后的采访。
也准备从简历中谈谈您的经历。 他们做了什么,为什么要解决什么问题。
请记住,您不是百科全书,并且不应立即列出例如Java中的所有功能接口。 如果只说说自己的工作是很正常的。
请记住,面试主要是对话。 他们不会询问您,如果您什么都不知道,也不想让您感到羞耻。 雇主会找出您是否合适,而您会找出这份工作是否适合您。
另一本好书是《
破解编码面试》 。 您可以看一下,特别是如果要在Google,Facebook等外国公司进行采访时。
准备过程中可能需要的有用资源:
- 破解编码面试。
- OCP:Oracle认证专业Java SE 8程序员II学习指南:考试1Z0-809。
- 帖子“我会给您回电 。 ”
- Leetcode 。
- 采访位 另一个存在算法问题的站点。 在这里,任务被分为几类。
祝你好运