第一阶段:培训
我有意识地来到 JavaRush:充足的每月价格表、清晰的材料结构、大量的实践以及我自己的社区的存在。第一点很清楚,但是学习一门没有结构的语言是相当困难的,这样的训练肯定会让一个人在 Java Core 方面有严重的差距。 面试和技术规范的经验表明,有关“核心”的问题可以用于一切:从按位移位和泛型转换到 IO 和序列化。实践是必须的;如果我自己写的话,我仍然只能理解和记住一半的东西。好吧,社区:你解决了问题 - 在评论中吹嘘它;如果你还没有决定,欢迎你提出问题,但很可能没有人会给你现成的解决方案。即使在完成课程后,我又回到了关于免费主题的自定义文章,那里有很多好东西可供开始(尤其是使用分步示例+面试问题的框架的第一次体验)。总的来说,我很感谢这个项目为我提供的基础,但我不会仅仅依赖 JavaRush - 同样的 Shildt 最重要的是与正在研究的主题“重叠”,并且经常揭示一些观点。评论中已经说了很多关于有时超越理论并迫使你去谷歌的任务。对我来说,这更多的是优点而不是缺点——而且现在的情况与我学习时的情况并不相同。 对那些像我一样“从头开始”进入 Java 的人的直接建议:在某些阶段,您可能会变得无聊或困难:-
从零开始对每个人来说都很困难;上帝保佑,只有 5% 的人能完成课程。你的任务就是成为他们中的一员。
-
一两个月后,当任务变得更加困难和有趣时,我的兴趣就出现了。要有耐心。
- 最重要的是每周的进步。休息了两周,回来已经很困难了,而且不是每个人都能连续几个月每天都写的。给自己一周的工作时间设定一个限制 - 例如 15 小时。您可以每个工作日编码 1.5 小时,每个周末再编码 3-4 小时,或者您可以休息几个晚上,但“周末限制”会限制您的工作时间。增加。这样,日程安排就会灵活但有规律。当然,这样就可以通过任务和项目来衡量工作,但在语法和内核级别,小时就足够了。
第二阶段:自我教育
所以,我没有得到实习机会:我只在技术要求上留了几天时间,直到入组结束,没有时间去弄清楚要求——生词太多。因为 我不想再等三个月,我决定自己继续前进。幸运的是,所有流行框架都有指南和视频教程。在接下来的几个月里,我接触了 Spring MVC、Spring Boot + Data、Spring Security、Hibernate、jUnit、Maven、Git、RDBMS,掌握了 SQL 并尝试将它们整合为一个整体。六个月后,我的项目现在看起来很可怕,但我获得了使用“成人”框架和 GitHub 的实践经验,可以应潜在雇主的要求展示这些经验。 建议:-
越早了解 .gitignore 越好。;)
-
许多指南同时包含多个框架;使用这个并添加你自己的。我们使用 Maven + Spring Boot + Data 编写了一个在线商店 - 添加授权、单元测试和日志记录。
-
对于 Web 项目,您可以从 Internet 获取免费的前端模板 - 它们使用起来更愉快,并且作为 Git 上 README 中的屏幕截图看起来更好。同时,您将能够记住 HTML 和 CSS - 您可能需要更正样式和布局。
我错过了什么(后来面试时被烧伤了)
-
算法。为了避免我的错误,我立即推荐一本俄语短书《Grocking Algorithms》。算法的复杂性是什么,它由什么组成,为什么快速排序还不够,图论简介 - 一切都在那里,并且以最容易理解的语言。
-
“幕后”收藏。我不记得这是否是在 JavaRush 中,但了解 HashMap.get() 的工作原理或为什么 HashSet 不能保证保留元素顺序很有用。再说一遍 - 哪些集合是线程安全的以及为什么。
-
SQL。您至少需要 JOIN - 它们是什么、它们如何工作、在纸上的两个表上即时编写 SELECT 的能力。我推荐 www.sql-ex.ru:它将在一两天内带您达到所需的水平。
-
Spring Core:有哪些注解,什么是上下文,bean是如何创建的,哪些Bean Scope是线程安全的,如何解决相互注入——都是面试题。如何返回页面,如何返回JSON等。我目前正在阅读俄语版的《Spring 5 for Professionals》,但总的来说,他们推荐《Spring in Action》。
第三阶段:找工作
事实上,在完成家庭项目后的头几个月里,我(通过 HH、LinkedIn、招聘机构)向各种初级/实习生职位空缺发送了大约 30 份回复,但结果几乎为零。我只关注没有经验的职位空缺,诚实地指出了我熟悉的堆栈,并在求职信中写下了我的高学习能力。结果是两次电话(其中一次直接以我中级前的英语结束),另外两家公司发来技术规范,只有一次“会议”,然后我一个人在一张纸上解决算法问题,然后HR就把文件拿走了,然后“我们会给你打电话”。我尝试过几次实习(无薪和有条件付费):我做了技术规范,但没有超出最终的社会保障;但现在我可以说,实习生肯定是T-Systems、CFT、Andersen和EPAM招聘的(他们的评价褒贬不一,你自己决定吧)。对我来说,如果你有机会在没有收入的情况下坐几个月而不死,这是进入这个领域的好方法=)总的来说,在这次经历之后我变得有些沮丧,并暂停了整个故事的搜索将近六个月 - 我继续研究之前的配置文件,只是为了好玩编写了一些应用程序,但甚至没有将它们发布到 Git 上。直到我遇到一个熟人,我随口向他讲述了职位空缺的失败:当时他已经是一名中级开发人员,但他以同样的方式开始——自学。 一位熟人给了我一些推荐,他自己也用了这些,这对我以后找工作有很大帮助。你是否跟随他们取决于你,因为...... 从某种程度上来说,他们并不完全诚实。因此,进一步引用:-
无论如何,在简历中为自己提供 6 个月以上的商业经验:实习、毕业项目、自由职业、远程工作 - 等等。这对于HR初审简历阶段有很大帮助;
-
从简历中删除“Junior”和“期望薪资”一词;就将其保留为 Java 开发人员,并与每个公司单独讨论资金;
-
在你说出你的期望之前,尝试让人力资源部门说出提议薪资的“叉子”。如果一家公司提供80-120k,而你正在寻找40k或更多,一些选择者会鄙视你;
-
适用于适合您堆栈的所有职位空缺,即使它们需要 1-3 年的商业经验。
-
在你的简历中包含你使用过的整个语言、技术和框架。
-
在 LinkedIn 上注册——那里确实有很多来自不同公司的人力资源人员。仔细填写您的个人资料 - 事实上,这也是您的简历。要发展您的联系人网络,请添加与您的个人资料相关的 LION;他们接受所有用户的请求。
-
尝试一下免费的 Java 测试 - 这些测试通常在初级面试之前以纸质形式进行。最好提前做好准备。
-
他们总是询问有关藏品的信息:有哪些藏品、它们有何不同、何时是使用它们的最佳时机。
-
总是在抽象类和接口上——它们可以有方法、字段吗?哪些是可以继承的,等等。
-
几乎总是在多线程上——你在工作中使用了什么,关键字,方法,你是否熟悉util.concurrent。
-
通常在使用内存时 - 堆、堆栈,以及这些字符串是否相等,以及这些对象,为什么。
-
有时关于算法 - 你知道哪些,复杂程度如何,为什么,你现在可以写一个算法吗?
-
有时基于模式 - 您知道哪些模式,您使用哪些模式,编写单例或工厂。
-
有时在 SQL 中 - JOIN 类型、事务是什么、如何在 JDBC 中进行事务、编写一个简短的查询。
-
Salesforce 个人资料业务联系人页面,可编辑和添加新记录;
-
使用带有控制台控制的 Spring 状态机模拟多层建筑中的电梯;
-
基于 LibGDX 库的 Android 应用程序,按下按钮时可逐字符输出文本;
-
REST模仿汽车共享,通过HTTP请求添加客户端并返回JSON;
-
通过自由单元对无向图进行排序的问题;
-
使用文件中的坐标搜索等腰三角形;
-
使用 Stream API 重构已完成的代码;
-
支持三元表达式的 UI 计算器;
-
将结果写入文件的线程竞争。
-
不仅要尽力完成任务,还要确保代码符合OOP原则。
-
检查你的代码的效率 - 我曾经被拒绝,因为除其他外,我使用 PrintStream 而不是 BufferedWriter。
-
以 50% 的余量来规划你的执行时间——早点开始和结束比在截止日期的早上八点进行 git Push 更好。
GO TO FULL VERSION