JavaRush /Java 博客 /Random-ZH /未来 Java 开发人员的指南。面试和职业生涯
Fry
第 41 级
Львов

未来 Java 开发人员的指南。面试和职业生涯

已在 Random-ZH 群组中发布
未来 Java 开发人员的指南。 面试和职业 - 1 原力是一条可供许多人饮用的河流,而绝地训练并不是汲取它的唯一途径。” — 卢克·天行者 所有的书籍选择都被留下了。由您决定阅读哪些内容和不阅读哪些内容。现在你只剩下一个目标:找到一份工作并建立自己的职业生涯,而不踩耙子。 上一篇文章分为几个部分: - 工作前 - 面试 - 工作中 这一部分包含了很多我个人的观点,所以请不要断章取义,把它当作是与老朋友的坦诚对话:)。

上班前

以下是十种最流行的陈词滥调,当灵魂被编程所吸引,但某些情况干扰了人时,就会出现这些陈词滥调。我的任务是努力消除你的疑虑,让你建立积极的思维方式。如果您正在阅读这篇文章,那么您比您想象的更进一步!在精神上,你已经到达了你需要到达的地方,如果你已经读过一些书,那么你已经成功了一半。因此,不要再怀疑了——这就是弱者的命运。唯有前进!已经好多了?那我们走吧! “我没有受过教育” 当我完全没有受过教育,进入一家大型外包公司的学院时,面试官温和地向我暗示,他们对文凭根本不感兴趣,所以问题很具体——关于OOP和基础知识爪哇。当然,您会遇到技术可用的职位空缺。教育将是一个明确的要求。我只是想说,他的缺席这些天并不是一个障碍。许多外国办事处要求计算机科学学士/硕士学位,或者注意相关经验。没有说服力?你可能会因为我没有接受过技术教育而感到鼓舞;),但这绝对没有阻止我在大公司获得经验。现在问我,如果我可以倒带电影,我会做什么?当然,我会去KPI/NAU,但如果没考上我也不会太难过。别再担心了。时间会过去——如果你愿意的话,你可以在 40 岁时获得学位——但现在,专注于成为一名初级开发人员。 “总会有人比我聪明” 总会有人比你更聪明、更聪明、更灵活、更有才华,任何工作也不例外。这一事实绝对不赋予您偏离目标的权利。也许,在地球另一端的某个地方,有一个来自日本的小男孩比你更快地计算乘法和除法,而一些来自捷克共和国的祖母在手机键盘上打字比任何青少年都快。但你不考虑这个,对吗?那么,一旦你被录用了,为什么还要关心和你一起工作的人呢?在某些方面,你未来的同事会比你优越,而在另一些方面,他们会不如你。这可以!我们把它划掉。 “我不认为我可以” 首先,没有人说这很容易,但这并不意味着你的目标是不可能的。即使您目前担任会计师或销售顾问,也没有什么可以阻止您简单地尝试。下班后过来坐下来学习。如果随着时间的推移你看到一些进展,这表明你正在朝着正确的方向前进。不要停!如果你对这个哪怕有一点点兴趣,并且把它给了你,那么我不知道有哪一点可以让我相信你不值得。 “我被懒惰压垮了” 懒惰只是缺乏动力。如果您发现您的大部分空闲时间都在愚蠢地做垃圾,而不是学习和保持正轨,那么我要赶紧通知您,很可能,成为一名程序员不适合您。至少不是现在。有些人把懒惰称为罪孽、疾病、现代霍乱和肥胖。把这件事留给职业歇斯底里的人吧。在我看来,生活中的一切都充满了斗争和竞争的幻觉:谁更高,谁更强,谁更富有。谁拥有更酷的车,谁在团队中的薪水更高,谁在健身房卧推更重,哪个女孩结婚早生孩子——这会让你生病,就像臭快餐一样。人们不再生活和享受生活,不再追随自己的梦想,放弃舒适区,在百事可乐和可口可乐之间做出选择。对我来说,懒惰是好事,这真是太美妙了。这是身体的一种普通保护功能,可以节省精力和时间来处理对身体无用的事情。人生来就是自由的,所以如果你很懒,就别再试图把你的屁股从沙发上抬起来了——也许它现在已经就位了:)。 “我去那里是因为钱” 如果你聚集开发人员并说:从现在开始,任何级别的工资都将是 3-4k 格里夫纳,而测试人员将继续获得相同的工资,那么问题就会有所不同:不是有多少这是一个炸弹,而是有多少程序员在这个消息之后仍然是程序员。很多人进入IT行业都是为了钱。薪水由美元、奶酪和昂贵的数码单反相机换算而来。无论我与人们共事多少次,总会有人谈论这个问题。我并不是说这不好,我只是希望你不要试图说服自己,你来这里纯粹是为了精神上的目的,让世界变得更美好。在我大三入职之前,我就知道前辈、技术主管、甚至中层管理人员的工资是多少,这些想法只给了我启发:在我当程序员之前,这样的数字只能是我的梦想。用正确的名称称呼这些东西,不要为此感到羞耻。 “在我看来,这不是我的。” 那又是谁的呢?你知道,检查很容易。打开 Hortsmann 的第一卷,开始阅读和编写示例代码。如果你不感到无聊,并且你没有在第二周的同一章上原地踏步,那么就抛开你的疑虑吧。学习技术专业是一个循序渐进的事情。如果不知道 A,你就无法继续学习 B,但你总是有机会回顾上一章并巩固你的基础。大胆试试吧。 “像我这样的人还有很多” 总是存在争夺席位的竞争。我不争辩,例如,现在有 300-400 名没有经验的测试人员,甚至每个地方更多。是的,这是残酷的事实,但另一方面,即使有这样的指标,我也找不到足够严肃的观点。是的,每个地方至少100500!!您总是有机会获得项目经验:构建某种服务、桌面程序、使用您知道的整个堆栈 - 并且您已经取得了进展,而除了发送简历之外,其余的都可以做没有其他的。 “没有人回复我的简历” 继续上面的观点。最有可能的是,对于未来没有经验的IT专家来说,能够写出一份漂亮的简历是件好事,但是当一个空缺职位有很多人时,许多简历彼此非常相似:你当然可以发送一张照片有乳沟(如果是女孩)或写了很多技术,这些技术你自己只能从维基百科上知道。在这两种情况下,HR 根本不会关心:如果项目空缺必须包括一个例如了解 AWS 的人,那么他们就会在简历中寻找 AWS。考虑另一个重要点,例如同事的建议。这是任何没有这样的熟人的人的痛苦,因为大部分的后辈都是从那里被带走的(如果这个人是推荐的——当然不是白痴)。我强调,通常情况下,对于初级职位,他们会雇佣一个足够活跃、愿意学习、甚至愿意吃饭的人。如果这样的候选人失败了,那么你很可能就是下一个。好吧,当其他人都在接受面试时,您有很多可以提高技能的领域:开源、互联网上的任务,也许还有自由职业。 “我不会通过面试/我想加入一家特定的公司” 是的,第一次面试很可能会失败,但你将获得的经验是无价的。在随后的每次面试中,您都会变得更加自信和足智多谋。我还记得我的第一次……天哪,我在说什么废话?!听完之后就离开真是太可惜了(我记得那个对着我笑的食尸鬼),但当我回到家仔细想一想,我意识到这是一个很棒的教训。在他之后,所有类似的活动都充满了轻松和自信。没有人死,他们正在寻找像我这样的人,这意味着我会出现。相信你自己!如果你特别想加入某家公司,那么我想我不会告诉你在我们环境中流行的生活窍门,但仍然是:在你组织与这家公司的会议之前,先与竞争对手进行面试。也许你会得到一些你无法拒绝的东西,或者条件会更苛刻。我确信一件事:你不会后悔的。 “我对这份工作也感觉很好” 你知道,有句老话:Le mieux est I'enneini du bien(“最好的就是好的敌人”)。也许你的工作并不是最糟糕的地方,但是,是的,老板是个混蛋,那又怎样?或者,比如说,第三年没有奖金,但是有稳定的工资,尤其是我已经30多岁了。在某种程度上,这可能是真的,只要记住你的生命只有一次,不应该浪费在失望,为了想象中的安慰,当周围有那么多有趣的事情,而你的一生都不足以理解时。不要害怕变得更好,不要害怕成为最好的。不要听任何人的意见,如果你知道这就是你真正想做的事情,就坚持不懈地朝着你的目标前进。不要害怕改变!

面试

总的来说,你可以在互联网上找到所有这些,或者询问你的朋友,但我认为这不会是多余的。下面是一个初级 Java 开发人员面试的例子,如果我是面试官,现在的面试情况就是这样。问题可以是任何问题,我只是试图收集一些关于医院的一般信息。让我们想象一下您很幸运。 标准方案 步骤 1.招聘人员给您打电话,您安排与她的面试,例如明天 11:00。 步骤 2.您提前到达,因为 11:00 很可能不是您的时间,而是开发商的时间,他们已经预留了某种房间,他们会在其中折磨您。对于任何招聘人员来说,对此提出警告都是一个很好的做法。 第3步。事实上,从第3步开始,所有的点都可以混合起来,因为面试的过程可能会有所不同。例如,在这里你可能会被问到一些基本的事情,你来自哪里,为什么在这里等等。有可能HR自己可以做这个,当然也有可能是用英语。确实,这取决于公司。 步骤 4.您被邀请到一个会议室,在那里您将与一、两个、三个人进行对话,其中一个将是未来与您合作的高级人员或技术主管,其余的人都在那里可能是 Scrum Master、其他开发人员或 HR。他们会采访你一段时间,然后与你握手并让你离开。 第 5 步。也许这将是第二天,或者也许是在第 4 步之后立即进行 - 您将与外国客户(如果有的话)进行对话,或者他可能会亲自进行采访。正如您所看到的,有很多选择。哪里有客户,哪里就有电话采访。这只是一个例子。 初级 Java 开发人员的技术面试示例 我对那些读了一些聪明的东西以在面试时在应聘者面前淹没/碾压/炫耀的低级开发人员感到非常遗憾。如果你看到这样的人在你面前,感到压力和紧张,立即派他去参加三个有趣的活动,因为成功完成后你将不得不和这个白痴一起工作。不要浪费你宝贵的神经。首先,面试的目的应该是找出候选人知道什么,而不是不知道什么。当然,如果你需要一个懂特定东西的人,就问他,不要用你在项目中用不到的无用的东西来打扰他。毕竟是人啊!以下是面试中可能出现的大概问题。每项技术 5 个问题。 面向对象编程 1. 举一个现实生活中多态性的例子?有什么优点?缺陷?写一些简单的代码。2.什么是接口?抽象类?如果我们可以愚蠢地将所有内容都写在类中(有点挑衅),为什么我们还需要接口?抽象类也是如此。Java 8 中的默认方法是什么?3. 使用假想的数据库或程序的特定示例(数据库中有不同类别的工人的列表)以及它们之间的交互(聚合、组合)构建类层次结构。4. 组合与聚合(is-a、has-a)有何不同?5. 如何绕过Java中多重继承的禁令? JDK/JRE 1. JDK 与 JRE 有何不同?什么是 JVM?2.什么是类路径以及它的用途是什么?例如,如何将其他类加载到类路径中?3.你对类加载器了解多少?4. 给我们介绍一下javadoc?它是做什么用的?5. 什么是JAR、WAR? Java常见 1.静态方法和非静态方法有什么区别?什么是最终的?2.什么是装箱-拆箱?byte b = 127, b++,结果是什么?为什么?3.什么是包装纸,它们的用途是什么?4. 我需要做什么来创建我的注释?什么是覆盖/重载?5.为什么String类是final的?intern() 方法有什么作用? 数据结构 1.解释Java中Collections API的结构?您已经使用过 Stream API 吗?2.ArrayList和LinkedList有什么区别?哪里用ArrayList比较好,哪里用LinkedList?3. 告诉我们HashMap是如何工作的?使用 TreeSet、HashSet 有哪些特点?您有番石榴收藏的经验吗?4. Java 中的数组,二维数组的示例。5. hashCode,以HashMap为例等于吗? 并发 1.什么是进程?流动?如何创建线程?什么是同步的?如何理解这段或那段线程安全代码?2.什么是Thread.sleep,还有wait、notify、yield?3.举一个死锁的例子?4. 使用多线程时的集合。5. ThreadLocal 和 Atomic SQL/JDBC 操作 1. 使用一个具体示例,从 Users 数据库中获取工资大于 5000 的用户。 2. 示例 INNER JOIN、OUTER JOIN、Order By、Group By。3. 为什么需要 JDBC 驱动程序?例子。4. 告诉我们您对 ResultSet 的了解,举几个例子。5.使用RS编写一个简单的DAO。 JPA/Hibernate 1. JPA 的缺点和优点是什么?2.什么是EntityManager?实体?3. JPA/Hibernate 中的标准。4. JPA/Hibernate 中的一对一、多对多 5. 如何在 Hibernate 中进行 JOIN?HQL? 春季 1. 什么是 DI/IoC?优点。2.什么是应用程序上下文?豆角,扁豆?3. IoC初始化有哪些类型?4. 单例,Spring 原型?基于注解的Spring?5. 豆子的生命周期?初始化方法、销毁方法?@PostConstruct,@PostDeploy? 梅文 1.maven的主要阶段,生命周期。2.如何运行maven带测试,不带测试?什么是原型、mvn 依赖?3.maven中的配置文件,如何创建,如何启动。4.maven中的快照是什么?中央/远程存储库?5. mvn 中的插件,它们如何工作,几个例子。 算法 1. 算法的概念、速度、Big-O-Notation。2、如何一次性找到LinkedList中的中间元素?3. 写一个原始的Stack?堆栈和队列有什么区别?后进先出、先进先出?4.快速排序、归并排序。5. 编写一个程序来检查一个数字是否是回文数。我同意,也许杠铃比初级的更向中间弯曲一点,但我认为这样的准备绝对不会伤害你。尝试更深入地研究每个问题。顺便说一句,Java中的很多领域这里没有指出,请考虑一下。

工作期间

这里给那些已经安定下来的初级/中级开发者一些小建议。这些简单的提示可能会帮助您,就像它们帮助我一样。 不要固执 不要 试图证明你的观点,即使它非常接近事实。你已经注意到,你们已经争论了很长时间,这意味着路障的另一边有一只普通的驴子,他的生活只有两种观点:他的观点和错误的观点。我们有数量惊人的固执的人,他们坚持到最后,只是为了让他们的自我不被动摇。这些不仅是你的同事,他们无处不在——小巴上、商店里、亲戚、亲密的朋友——你无法逃避或隐藏他们。你需要以某种方式与他们互动,即使你知道这个人在公开胡说八道。而且,同样的事情也可能发生在你身上。我同意,即使是一个顽固的人也可以解释简单的事情,但是如果我们谈论项目中的架构问题或个人观点怎么办?忘掉这些垃圾吧——保持灵活性。我非常尊重那些能够在所有人面前承认自己犯了错误的人。这正是对你作为初级专家有用的品质 - 很难与一个开放的人对抗,特别是当他承认他正在学习并且有权犯错误时。 不要迟到 无论是试用期还是星期五,每个人都忘记了,11点就来了,这并不重要。还有一点很重要:准时是专业人士的一个特征,他会突然为自己赢得额外的分数。而且加分不会伤害一个没有经验的人,对吧?尽量不迟到,诚实工作8小时后下班。 不要滥用估计 不幸的是,这是我过去曾经遇到过的一种非常常见的情况。开发者给自己设定了8-16小时完成任务,没想到只用了3-4小时就完成了。他把剩下的时间花在自己的私人时间上,就像我一样,或者看 YouTube 和其他娱乐节目。从法律的角度来看,似乎我们已经同意了,但从人性的角度来看,你正在剥夺自己非常重要的事情: 1.你原地踏步,因为你用不必要的事情来填补你多余的时间;2. 你没有发展,因为你没有向你的管理层通报你的快速进步;没有人知道你比预期更快地完成任务;3.你开始不断高估价值观的平均时间,这只是一条没有出路的路。花时间研究落后于火车头的可能性非常高,因此请记住,技术和新版本正在快速发展。订阅当今的 Java 布道者,阅读 Java 摘要,了解一般感兴趣的新事物。这将帮助您维护品牌并发展。 帮助别人 不要害怕帮助别人,即使他们和你一样不懂事。首先,你会大大增强你的知识,其次,你会在别人眼中获得尊重,同时他们也会帮助你。在这样的环境中,诞生了最优秀的团队,以及非常快速的技术和个人成长。 做运动。有一个爱好 不,说真的。锻炼的人不仅看起来更好、感觉更好,而且他们的大脑功能也更好!脊柱侧弯、下背部、体重过重、各种内脏器官问题——全天候坐在电脑前,甚至在工作之外,都会导致这种情况。如果你不能参加运动(我对此表示怀疑),可以使用生活小窍门:时不时地站着工作,提前两站下车,然后步行去上班。一般来说,多走路。如果每周花在编程上的时间超过 40 小时,那么还有倦怠的风险。个人爱好会起到帮助作用——例如摄影、音乐等。定期腾出时间进行灵修。 平衡你的个人生活 当你的女朋友/妻子说:“笔记本电脑还是我”时,你需要仔细考虑编程在你的生活中占据什么位置。另一方面,当你开始 IT 之旅时,你需要向你的另一半清楚地解释,现在你需要学习很多东西才能取得更多成就。我希望他们理解。好吧,试着正确平衡和分配你的时间。 超越 积极主动,例如,如果您觉得自己可以分享知识或有有趣的主题,为什么不在公司内为其他人组织小型课程呢?如果您知道如何提供帮助,请不要害怕参与大型开源项目。如果您想编写游戏、社交项目或其他想法 - 去做,去做,去做!不要固步自封,不断寻找发展的途径。 保持竞争力 关注新趋势,及时了解 Java 社区中发生的趋势。例如,如果您偶尔、时不时地在 DOU 上监视 Java 职位空缺,这不会有什么坏处,但不是为了摆脱工作,而是为了了解哪些技术仍然相关,哪些技术正在慢慢从市场上消失。也尝试参加Coursera、Udacity等上的课程,探索新的视野。甚至英语:尝试观看您最喜欢的带有字幕的电影/连续剧,以提高您的会话技巧,下载一些有趣的应用程序来学习语言(例如 LinguaLeo),最后,参加课程。

结论

好了,我在 DOU 上的小项目即将结束。亲爱的朋友们,我真诚地祝愿您找到工作,并希望我在这 7 篇文章中描述的所有内容对您,甚至对于那些已经从事 Java 开发人员的人来说都是有价值的指南。未来的后辈们,请记住,没有什么是不可能的,如果你真正逼迫自己,你一定会成功。我希望你最终决定是否适合你,制定详细的训练计划并冷静地执行。如果你得到的回报是沉默,不要沮丧——这都是暂时的,最重要的是要相信,在任何情况下都不要偏离路线,而是要学习、学习、再学习。我非常感谢 DOU 团队编辑了大量材料并在周一给了我黄金时间。DOU 是一个很酷的社区,它不再只是乌克兰 IT 专家的网站。我还要感谢所有斜视我的文章、断章取义的评论者。没有你,这些文章就不会那么有趣:)愿原力与你同在! 原文摘自DOU
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION