JavaRush /Java 博客 /Random-ZH /诀窍,或者如何在没有 Java 经验的情况下找到中级 Java 开发人员的工作
Юрий
第 30 级
Москва

诀窍,或者如何在没有 Java 经验的情况下找到中级 Java 开发人员的工作

已在 Random-ZH 群组中发布
向所有 Java 学生和专业人士致以问候。也许我的故事将成为一些人如何做的例子,而另一些人则可以作为如何不做的例子。现在是2021年10月19日,今天我在一家大公司作为Java中层开发人员完成了试用期(3个月)。我以前没有 Java 开发经验。直到2020年6月4日,我对Java一无所知。当我被录用为 Javaist 时,我承诺,如果我通过了试用期,我会写一个成功的故事。本文将分为两个逻辑部分: 职业背景(第1-5 章,与 Java 无关),但您可以从中获得有关您职业的知识)。成为 Javaist(第 6-9 章 - 学习 Java、面试、找工作、第一次真正的经验)。<h3>第 1 章. 经济学家</h3>为了了解我进入 JavaRush 时的知识水平,我需要对自己进行自我介绍。2013 年 11 月,上午 8 点。我坐在 Taganka 的一家咖啡店里,重复 SQL 指令。一小时后,我将接受银行财务部首席经济学家职位的面试。这是我唯一受邀参加的面试,我需要百分百付出。为了他,我从圣彼得堡飞来,住在亲戚的厨房里,以免花掉我本就微薄的积蓄。30分钟过去了,火腿奶酪煎饼吃完了,我们要向我们所珍视的梦想迈进了。但一切都在震动。如果我面试失败怎么办?好吧,事实并非如此。我去银行,拿到通行证,然后在会议室等待受访者。时间流逝了很长一段时间。进来的是一名35岁左右的男性和一名同龄的女性。他们自我介绍并要求你介绍一下自己:“尤里,很高兴。” 我今年21岁,在圣彼得堡的一所大学兼职学习,在一家银行当了3个月的出纳员。我意识到这不是我学习的目的,我开始关注就业市场,发现在莫斯科经济学家有 SQL 作为要求。所以我研究了它,参加了课程(MS SQL 管理 - 这就是我所拥有的,这就是我所追求的),然后你给我打电话。他们讲公司,讲他们做什么(大部分话都听不懂),然后让你去考试。测试有 3 个关于 SQL 的问题: 1. 给定一个表,取出 id = 10 的所有记录。 2. 给定两个表,连接它们并显示每个表的一列。3. 对部门进行分组并给出每个部门的员工人数。我非常羞愧地写下这些请求。接下来是我对这份工作的期望的讨论。他们告诉我那句神奇的话:“感谢您接受采访,我们会给您回电。” 一周过去了,他们邀请我去和他们一起工作。欣快、震惊、喜悦!还有多少钱:手里有7万卢布!是的,我会变得富有!我来到莫斯科,安顿下来,在市中心租了一个房间。第一天是欣快的。10天后,我开始意识到:我从哪里来?我什么都不懂!我每个月必须为整个银行准备管理报告。当然,对我来说这和对你来说是一样的,亲爱的读者。我认为银行间信贷、掉期、费用分配、成本等术语都是拉丁语拼写。在此过程中,我必须掌握问题的技术方面:MS Access(所有报告都是通过 VBA 完成的)、MS SQL(作为新存储,而不是 Access)、Oracle(我最初将其称为 Oracle,导致歇斯底里)程序员之间)。突然我开始明白技术方面对我来说更有趣。有人尝试创建复杂的查询(结果,数据库挂在我的脚本中,愤怒的管理员四处寻找是谁干的)。但主要工作是财务,这让我很生气。一个半月后,我正在写一封辞职信,因为我无法给出任何结果(老实说,他们并没有真正期望我得到任何结果)。财务部负责人把它撕碎并说:“别费心了。” 一个月后,我再次写了一份声明,对如此厚颜无耻感到震惊的部门负责人(后来成为银行董事长)极其困惑地签了字:这家伙今年21岁,没有更高学历。教育,他们既得到了薪水,也得到了信任,但他却表现得这样。被解雇的原因还有两个因素:一是老板的傲慢,让我无法冷静地应对;二是椅子不舒服,让我的背开始疼痛。这非常有趣,但动机如下。当我辞职时,我想现在我会变得更舒服。但它不在那里。<h3>第二章。70次采访</h3>离开银行,我深吸了一口气。“我这样安排,大家都会惊呆的。” 采访安排好了,工资也高了,似乎也不用再去处理报道了。有 4 次面试,没有人录用我。5、6 次面试——同样的事情。我和一个女孩住在出租屋里,她找到了工作,可以弥补我收入的不足。但我仍然不知道我要多久没有收入。我参加了面试(分析师职位空缺),他们主要问的是 SQL 和 VBA。对于那些不知道的人来说,VBA 是 Excel、Access 和其他 MS Office 产品中的一种编程语言。进行了 10 次采访——没有任何结果。20、30 - 什么也没有。每个人都因缺乏经验和高等教育而感到尴尬(这对我来说似乎是一件小事)。40 次采访,绝望开始蔓延。在55-60次面试期间我开始研究1C。这个已经成为妻子的女孩要求前往圣彼得堡,因为至少她在那里有自己的住房。而在第70次面试时,我被邀请到圣彼得堡工业区的一家小公司担任1C数据库管理员(有成为1C开发人员的前景),报酬为5万卢布。现在这就是职业发展!<h3>第三章.传奇归来</h3>在灰色的圣彼得堡工业区,看着一辆小巴(企业交通工具)的窗外,行驶了一个小时四十一路,我意识到我无法就这样生活。当第一次接触自写系统时,对1C的兴趣就消失了。需要一个计划。他也成熟了:晚上他学习 SQL,同时监控著名的工作网站。解雇的最后触发因素是这样的情况:尽管机票已经买好了,但总经理不想让我去计划好的假期。假期结束后,我写了一份申请,并再次发送了莫斯科职位空缺的简历。莫斯科时间,我再次获得了一家大型银行的面试机会。我再次来到亲戚的厨房去接受采访。当hr写下地址时,我简直不敢相信自己的眼睛——这就是我梦想工作的大楼(当我最后一次在莫斯科居住时,它刚刚在建设中)。该职位被称为首席信息系统支持专家。我去办公室 迎接我的是一位 30 岁左右、穿着时尚夹克和牛仔裤的男人。我们登上了15楼,当我看到城市全景时,我惊呆了:所有斯大林主义的高层建筑都清晰可见。整个建筑风格非常现代:老板办公室里有酒柜、时尚的水族箱、黑白风格的裸体女人画。这引起了“哇”的效果。与老板的谈话并不像平常那​​样:他用了大约 40 分钟的时间谈论银行发生的事情。我什么也听不懂,但还是点了点头。当我问:你什么时候开始问我?他没有注意。再次,对于我的问题“技术面试什么时候?”,答案是“是的,无论如何我们都会雇用你,如果你不能处理,我们会解雇你。” 笑着说道,我才发现,一切,梦想又成真了!<h3>第 4 章:在 IT 领域找到自己</h3>当我到达新的地方时,我明白了他们为什么立即雇用我。我来描述一个部门员工的典型画像:平均年龄55岁,莫斯科人,莫斯科国立大学学历,苏联时期在国防研究所工作,90年代转型到银行业,在这里工作了20年年。一半是男性,一半是女性。它们与周围的室内装饰完全不协调。我们参与维护会计报告程序。当然,这都是 90 年代末 2000 年代初开发人员编写的古老 VBA 和 SQL 脚本。那是 2015 年,自动化是通过 MS Access 实现的。也就是说,它看起来非常糟糕。但有一个细微差别——他们提供了客户(会计)想要的东西。并且准时并以所需的形式。只有他们知道它是如何运作的,甚至奥诺托尔也无法想象他们的发展有多复杂。任何IT经理,即使有最大的愿望,也不能解雇他们——总会计师去银行董事会,为任何为会计部门利益服务的员工辩护。经理要我扮演特洛伊木马的角色:我研究他们所有的发展,然后将数据迁移到新系统。那么老员工就可以被解雇,我就可以调到新系统。首先,我深入研究了他们的流程并查看了 VBA 代码。渐渐地我学会了阅读VBA代码。一年后,我已经知道如何编写代码了。典型任务:给定一个数据库,从中提取数据,并将其以某种格式放入Excel中。现在,正如 Zadornov 所说,深吸一口气:该部门的所有报告(其中 50 份每日报告,20 份月度报告!)都是手动运行的!Karl,你知道吗,人们每天都会用手中的 50 份报告将日期更改为 +1!他们坐下来,等待一份报告的结果 1-10 分钟,然后启动另一份报告!而且,日报必须在特定的时间推出,千万别迟到!他们不仅制作报告,而且在不使用变量的情况下手动运行数据库中的程序!也就是说,他们不会使用 @startDate = '2015-01-01' 变量,而是在 20 个地方手动更改相同的日期!看完这些之后我开始学习Python,与 VBA、SQL 和任务调度程序一起,我在两年内实现了这一切的自动化。不仅自动化,而且还加速了许多报告:如果您放弃MS Access + VBA而转而使用MS SQL + TSQL,您可以实现生产力的成倍提高。我的记录是加快报告创建速度100一次!但我的同事们对这种自动化非常不满意,所以我被宣布为人民的敌人(他们想安静地坐着直到退休)。时间过去了,数据迁移成功了。经理很看重我:如果我刚入行的时候早上8点来上班,那么过了一段时间就可以随时来,一直到12:00,工资和职位不断增加,周末加班费更多比双倍的金额,上班迟到打车到家,移动通讯,总之——精英!<h3>第 5 章金笼</h3>突然,3.5 年后,新的 IT 管理层来了,并表示不再需要我将数据迁移到的系统。但旧系统仍将保留。我的经理正在职业阶梯上晋升,并邀请我转到一个更进步的部门。在一次与进步部门负责人的会面中,我了解到这个部门的技术栈对我来说是陌生的:Oracle、.net、C#、Linux等+对潜在老板的反感。我告诉我的经理我对进步部门不感兴趣,他很容易就忘记了我。然后问题就变成了:下一步该做什么?收入已经不错了,Junior dev不会用这个薪水雇用我。在思考我的技能之后,我意识到我需要进入机器学习领域。一切都很有趣,直到第一次接触数理统计,这只引起了研究所的厌恶。就这样,昏迷了六个月!时间流逝,有一天,在散步时,我想到了一个可以在莫斯科地图上显示好餐馆的网站。开始学习HTML、CSS、JS。我花了三个月的时间学习;我没有创建一个成熟网站的知识,但我可以在工作中练习。一个想法诞生了:为会计师创建一个门户,以便他们可以使用按钮为自己下载任何报告。创建门户花了 2 个月的时间,SPA(单页应用程序)Web 应用程序在带有 Node.js 后端的 React js 中诞生。返回运行 SQL 脚本(我不知道像 Hibernate 这样的框架),启动 Python 并在 MongoDb 中存储附加信息(例如,有关站点用户的信息)。从外观上看,该网站看起来非常不错(bootstrap 4,时尚的动画)。我仍然为这个项目感到自豪。但当我向银行的网络开发人员展示我的代码时,他们惊呆了。不是你自己的一类!只有特色,只有硬核!他们称赞了我,但说我还需要大量学习才能成为一名中级全栈开发人员。我试图找一份分析师的工作,但没有特别优惠。我想:我不在场,我就贴出我的全栈开发者简历吧。电话打来了,但在面试过程中,我像胶合板一样飞过巴黎:例如,我不知道 HashMap、HashSet 是什么以及为什么需要它们。对 OOP、编程模式、算法、测试、Git 一无所知。我想起了因对基本事物的无知而被遗忘已久的羞耻感。突然,一家金融公司收到了一份客户分析主管的职位邀请。距离该国因大流行而关闭的一周。我在一家金融公司找到了一份工作,但有双重的感觉:一方面是高薪让人温暖,另一方面技术方面的发展却微乎其微。设备安装完毕并引入远程工作后一周过去了。由于金融部门不实行非工作日,所以我们照常工作。事实证明,新老板是一个非常疯狂的人:他主动提出要爬取 Facebook,创建自己的神经网络来研究客户(员工中没有数据科学家)。新员工可以在一周内学习Python等等,无薪休假成为常态。辞职是愚蠢的:大流行期间你会在哪里找到工作?但两个月后,公司宣布不再发放季度奖金,耐心就耗尽了。细微之处在于,我们约定薪资的时候,招聘的时候,hr说薪资分为底薪(60%)和季度奖金(40%),都是一直发的。很明显,我们做出了错误的选择,我们需要开始寻找新工作。<h3>第 6 章. 开始掌握 Java</h3>五月的一个晴朗的一天,我收到了“开发人员”职位空缺的面试邀请。保险行业的公司需要一个会开发保险产品的人。需要编程经验,但由于这是公司的“独特”开发,因此不需要特定的语言。还需要Git等。两天安排了面试,空闲时间学习了一下Git的基础知识。面试的时候问了Python、JS、Git、SQL。我回答了除了“方法重载”概念之外的所有问题,两周后我就被邀请去工作。原来,该系统早就被公司购买了。用Java(前端和后端)编写,您可以使用它创建业务流程,而无需了解编程语言(更准确地说,使用内置的Jelly编程语言)。听起来不错,但实际上一切都被扭曲了。抒情题外话:任何技术都有自己的时代和自己的规模。在 2000 年,仅在 Excel 中完成所有报告是很酷的。2021年做同样的事情不太好。纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 另一方面,技术方面的发展将微乎其微。设备安装完毕并引入远程工作后一周过去了。由于金融部门不实行非工作日,所以我们照常工作。事实证明,新老板是一个非常疯狂的人:他主动提出要爬取 Facebook,创建自己的神经网络来研究客户(员工中没有数据科学家)。新员工可以在一周内学习Python等等,无薪休假成为常态。辞职是愚蠢的:大流行期间你会在哪里找到工作?但两个月后,公司宣布不再发放季度奖金,耐心就耗尽了。细微之处在于,我们约定薪资的时候,招聘的时候,hr说薪资分为底薪(60%)和季度奖金(40%),都是一直发的。很明显,我们做出了错误的选择,我们需要开始寻找新工作。<h3>第 6 章. 开始掌握 Java</h3>五月的一个晴朗的一天,我收到了“开发人员”职位空缺的面试邀请。保险行业的公司需要一个会开发保险产品的人。需要编程经验,但由于这是公司的“独特”开发,因此不需要特定的语言。还需要Git等。两天安排了面试,空闲时间学习了一下Git的基础知识。面试的时候问了Python、JS、Git、SQL。我回答了除了“方法重载”概念之外的所有问题,两周后我就被邀请去工作。原来,该系统早就被公司购买了。用Java(前端和后端)编写,您可以使用它创建业务流程,而无需了解编程语言(更准确地说,使用内置的Jelly编程语言)。听起来不错,但实际上一切都被扭曲了。抒情题外话:任何技术都有自己的时代和自己的规模。在 2000 年,仅在 Excel 中完成所有报告是很酷的。2021年做同样的事情不太好。纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 另一方面,技术方面的发展将微乎其微。设备安装完毕并引入远程工作后一周过去了。由于金融部门不实行非工作日,所以我们照常工作。事实证明,新老板是一个非常疯狂的人:他主动提出要爬取 Facebook,创建自己的神经网络来研究客户(员工中没有数据科学家)。新员工可以在一周内学习Python等等,无薪休假成为常态。辞职是愚蠢的:大流行期间你会在哪里找到工作?但两个月后,公司宣布不再发放季度奖金,耐心就耗尽了。细微之处在于,我们约定薪资的时候,招聘的时候,hr说薪资分为底薪(60%)和季度奖金(40%),都是一直发的。很明显,我们做出了错误的选择,我们需要开始寻找新工作。<h3>第 6 章. 开始掌握 Java</h3>五月的一个晴朗的一天,我收到了“开发人员”职位空缺的面试邀请。保险行业的公司需要一个会开发保险产品的人。需要编程经验,但由于这是公司的“独特”开发,因此不需要特定的语言。还需要Git等。两天安排了面试,空闲时间学习了一下Git的基础知识。面试的时候问了Python、JS、Git、SQL。我回答了除了“方法重载”概念之外的所有问题,两周后我就被邀请去工作。原来,该系统早就被公司购买了。用Java(前端和后端)编写,您可以使用它创建业务流程,而无需了解编程语言(更准确地说,使用内置的Jelly编程语言)。听起来不错,但实际上一切都被扭曲了。抒情题外话:任何技术都有自己的时代和自己的规模。在 2000 年,仅在 Excel 中完成所有报告是很酷的。2021年做同样的事情不太好。纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 创建您自己的神经网络来研究客户(无需数据科学家)。新员工可以在一周内学习Python等等,无薪休假成为常态。辞职是愚蠢的:大流行期间你会在哪里找到工作?但两个月后,公司宣布不再发放季度奖金,耐心就耗尽了。细微之处在于,我们约定薪资的时候,招聘的时候,hr说薪资分为底薪(60%)和季度奖金(40%),都是一直发的。很明显,我们做出了错误的选择,我们需要开始寻找新工作。<h3>第 6 章. 开始掌握 Java</h3>五月的一个晴朗的一天,我收到了“开发人员”职位空缺的面试邀请。保险行业的公司需要一个会开发保险产品的人。需要编程经验,但由于这是公司的“独特”开发,因此不需要特定的语言。还需要Git等。两天安排了面试,空闲时间学习了一下Git的基础知识。面试的时候问了Python、JS、Git、SQL。我回答了除了“方法重载”概念之外的所有问题,两周后我就被邀请去工作。原来,该系统早就被公司购买了。用Java(前端和后端)编写,您可以使用它创建业务流程,而无需了解编程语言(更准确地说,使用内置的Jelly编程语言)。听起来不错,但实际上一切都被扭曲了。抒情题外话:任何技术都有自己的时代和自己的规模。在 2000 年,仅在 Excel 中完成所有报告是很酷的。2021年做同样的事情不太好。纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 创建您自己的神经网络来研究客户(无需数据科学家)。新员工可以在一周内学习Python等等,无薪休假成为常态。辞职是愚蠢的:大流行期间你会在哪里找到工作?但两个月后,公司宣布不再发放季度奖金,耐心就耗尽了。细微之处在于,我们约定薪资的时候,招聘的时候,hr说薪资分为底薪(60%)和季度奖金(40%),都是一直发的。很明显,我们做出了错误的选择,我们需要开始寻找新工作。<h3>第 6 章. 开始掌握 Java</h3>五月的一个晴朗的一天,我收到了“开发人员”职位空缺的面试邀请。保险行业的公司需要一个会开发保险产品的人。需要编程经验,但由于这是公司的“独特”开发,因此不需要特定的语言。还需要Git等。两天安排了面试,空闲时间学习了一下Git的基础知识。面试的时候问了Python、JS、Git、SQL。我回答了除了“方法重载”概念之外的所有问题,两周后我就被邀请去工作。原来,该系统早就被公司购买了。用Java(前端和后端)编写,您可以使用它创建业务流程,而无需了解编程语言(更准确地说,使用内置的Jelly编程语言)。听起来不错,但实际上一切都被扭曲了。抒情题外话:任何技术都有自己的时代和自己的规模。在 2000 年,仅在 Excel 中完成所有报告是很酷的。2021年做同样的事情不太好。纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 <h3>第 6 章. 开始掌握 Java</h3>五月的一个晴朗的一天,我收到了“开发人员”职位空缺的面试邀请。保险行业的公司需要一个会开发保险产品的人。需要编程经验,但由于这是公司的“独特”开发,因此不需要特定的语言。还需要Git等。两天安排了面试,空闲时间学习了一下Git的基础知识。面试的时候问了Python、JS、Git、SQL。我回答了除了“方法重载”概念之外的所有问题,两周后我就被邀请去工作。原来,该系统早就被公司购买了。用Java(前端和后端)编写,您可以使用它创建业务流程,而无需了解编程语言(更准确地说,使用内置的Jelly编程语言)。听起来不错,但实际上一切都被扭曲了。抒情题外话:任何技术都有自己的时代和自己的规模。在 2000 年,仅在 Excel 中完成所有报告是很酷的。2021年做同样的事情不太好。纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 <h3>第 6 章. 开始掌握 Java</h3>五月的一个晴朗的一天,我收到了“开发人员”职位空缺的面试邀请。保险行业的公司需要一个会开发保险产品的人。需要编程经验,但由于这是公司的“独特”开发,因此不需要特定的语言。还需要Git等。两天安排了面试,空闲时间学习了一下Git的基础知识。面试的时候问了Python、JS、Git、SQL。我回答了除了“方法重载”概念之外的所有问题,两周后我就被邀请去工作。原来,该系统早就被公司购买了。用Java(前端和后端)编写,您可以使用它创建业务流程,而无需了解编程语言(更准确地说,使用内置的Jelly编程语言)。听起来不错,但实际上一切都被扭曲了。抒情题外话:任何技术都有自己的时代和自己的规模。在 2000 年,仅在 Excel 中完成所有报告是很酷的。2021年做同样的事情不太好。纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建 纯 HTML 的公司网站在 1999 年很酷,但在 2021 年就不一样了。因此,该公司在创建时(2005 年)使用的技术非常酷 - Java 负责服务器和客户端部分(所谓的 Java servlet 页面)。此外,如果您创建一个新的业务流程(它有自己的 UI),那么它会存储在数据库中,而不是存储在文件的代码中。要理解这是多么不方便,想象一下您在 Intellij idea 中编写 Java 代码,将其保存到数据库,然后。当您想要运行代码时,程序内核会访问数据库并从那里读取代码。因此,您无法完全调试您的应用程序。提示#1:当您想要将代码提交到测试平台时,您需要创建SQL скрипт,其中将包含您的代码。不愉快,但可以忍受吗?热情 #2:数据库由 200 多个相互关联的表组成。这意味着您需要知道将代码放入哪些表中,以及需要在其他表中创建哪些实体。输出是一个长度约为 1000 行的 SQL 脚本。这实在是令人厌恶。谨防遗产。简而言之,意识到这一切都是用 Java 编写的,我去了 JavaRush(终于我们到达了该网站的主题!)。2020 年 6 月至 7 月。前 10 个级别很快就关闭了(可能一个月),因为没有什么根本性的新内容。然后速度就慢了下来。2020 年 7 月至 10 月。10 至 20 级关闭。2021 年 10 月至 3 月。20-30 级关闭。现在有趣的事情开始了:2021 年 3 月,我开始查看 Java 职位空缺,发现里面有很多陌生的单词。某种 Spring、SpringBoot、Hibernate、JUnit。在知名网站上购买了视频课程后,我刚刚接触了Spring,我想我现在知道并且可以做所有事情了。之后,我偶然发现了 Grigory Kislin 的 TopJava 课程。在他的网站上你可以尝试完成一个测试任务,如果成功,你就可以参加该课程。在本课程中,您将创建一个成熟的 Web 应用程序,甚至将其发布到 Internet 上。对于这笔钱,他们会给你一个审查(由更有经验的程序员对代码进行审查),提供反馈并在出现问题时给你提示。我做完作业3就放弃了。原因很简单:他们对你要求很多,但他们不给你任何知识。作业要求非常混乱。信息的呈现极其不一致。在我看来,来自其他类似语言的相当有经验的开发人员需要本课程。因为在他的课程中实际上没有解释他要求使用的技术。您还需要熟悉 Git(所有内容都会发送到您的个人存储库)。2021 年 4 月底,我发布了一份 Java 开发人员的简历(期望的薪资为中+水平),其中我指出在我的上一份工作中我是用 Java 编程的(我撒了谎)。同一天,银行收到 Java 开发人员职位的申请。<h3>第 7 章 Java 面试和技能磨练</h3>那么,计划是什么?我需要得到一份不错的薪水,因为我已经习惯了靠可观的收入+贷款生活。因此,初级职位不适合我。你需要获得一个中间位置。但谁会雇用没有经验的我呢?这个决定是自然而然的:我的工作记录显示,我在之前的职位上担任过一年开发人员,并在 IT 部门担任过 4 年专家。所以,我会说我已经用 Java 进行了一年的开发。如果他们询问新产品,我会说旧的 Java (7) 在那里并且不支持任何东西。在第一次(远程)面试之前,我很紧张。我没有经验,知识也很少,而且我要的钱很多。我想:没关系,负面的经历也是经历。我通过 Skype 联系,我将接受两位部门主管的面试。这让我更加害怕。问题开始:OOP、HashMap 设备、流、数据结构,什么是Spring、Hibernate、AOP。如果说在 Spring 之前它或多或少是可以忍受的,那么在 Spring 时它就完全崩溃了。人们问我:如果你真的不了解 Spring,你是如何开发它的?我:我复制了它,粘贴了它,它有效了,谢谢。这个答案让他们觉得好笑。然后他们又问了关于SQL的问题,我在其中如鱼得水。接下来是 Git 和一个关于 rebase、cherry-pick 的问题(我也不知道),最后是关于 JS 的问题,因为它已经在我的简历中列出了。那里也完全失败了,因为他们询问了 OOP JS。根据面试结果,很明显我的知识不符合要求,因此我不符合这个职位空缺的资格。晚上,人力资源部写道,我的候选资格已获得批准,他们准备给我打电话。事实上,我在麦当劳被一个汉堡噎住了。我很高兴,但三天后人力资源部报告说他们选择了另一位候选人。在我的经历中,这是第一次,要约被撤回。在第一次 Java 面试之后,我加强了自己的能力:我在一家著名的视频课程销售网站上学习了 Colt Steele 的 Git 课程(并且完全完成了!)。这改变了我对 Git 的看法。接下来,我学习了 Zaur Tregulov 的关于 Spring+Hibernate 的(精彩的)课程。训练方案:我像在视频中一样观看,在我的计算机上做同样的事情,但我对变量和类的命名不同,以免愚蠢地复制别人的代码。我将所有工作上传到我的 Github(从而练习 Git)。那是五月中旬,hr开始打来电话。我们开始一一安排采访。很多邀请都被取消了,原因如下:HR没有阅读我的简历描述,就邀请我担任高级职位。还值得一提的是一个单独的 HR 阶层:那些将 Java 与 JavaScript 混淆的人。这就是为什么我在简历的标题中写下“中级 Java 开发人员”。<h3>第8章典型问题列表以及面试如何进行</h3>我开始去面试,并在中间逐渐形成了一系列基本问题。要求:0. OOP - 定义,谈谈OOP的每一个原理(+举一个现实生活中的例子)。1. Equals 和 hashcode - 它们之间的契约(关系)是什么?2. HashMap - 如何了解一个对象将进入哪个桶,什么是碰撞,数据在HashMap中存储在什么数据结构中,标准大小,桶的数量如何增加。3. Stream——有哪些类型的操作,它们之间有什么区别,每种类型的操作都给出一个例子。4. 字符串池、整数池——这是什么?5.堆、栈——是什么,有什么区别?6. Runnable、Thread、Future 之间的区别。7. 易失性、原子性。8. 固体、亲吻、干燥——定义、现实生活中的例子。9. Java 中的访问修饰符。10.抽象类和接口有什么区别。接口可以私有吗?11. 功能接口。12. 列出所有对象方法并说明为什么需要它们。克隆方法的特点。13.什么是序列化和反序列化。14. 尝试捕获资源 - 描述它是什么,使用 Closeable 接口告诉它。15. Final、finally、finalize 之间的区别?16. 超载,方法重写就是区别。17. 为什么 String 是不可变的,请告诉我们有关 StringBuilder 和 StringBuffer 的信息。18.什么是时间复杂度O(1),内存复杂度。19.数​​据结构:谈论map、set、queue、deque、list及其在Java中的实现(treeMap、hashSet、hashMap、arrayList、linkedList、priorityQueue、blockingQueue),描述插入的复杂性(最差、平均、最佳),搜索,删除每个结构中的元素。20.Java中的原始数据类型。为什么需要它们中的每一个?21. 错误的类型。检查和非检查异常。22.什么是JVM、JRE、JDK?23. 您与哪些收藏家合作过?Maven - 构建生命周期。24. Spring - Ioc定义、Di、Bean生命周期、上下文、@Bean注释、@Configuration、@Autowired、@Advice、@Aspect、@Service、@Repository。25. 泛型 - 定义什么是下限和上限?26.编程模式——至少是Singleton(愿意解释为什么这有时是一种反模式)+ Builder、Adapter、Factory、Decorator、Proxt。理想的:26. 测试 - 测试的类型,使用哪些库(JUnit)。什么是模拟、刺杀、间谍?27. Spring boot - 为什么需要它,准备在线制作SpringBoot应用程序。28. Hibernate - 为什么需要它,实体,连接列,延迟加载与急切加载,缓存级别(硬)。29. Spring Rest - 为什么需要它,如何制作@post、@get端点。如何读取参数/请求体?如何以json格式提交?30. 数据结构——树,它们的类型。31. 算法——排序的类型。除了 Java,他们可能会问: 1.(必需!)Git - 为什么需要它,操作合并、变基、cherry-pick、push、pull、commit、log、checkout、branch、reset、revert、refresh。2.SQL - 编写查询的能力:将两个表连接成一个(内连接、左连接)。3. 数据库 - 3 种范式、索引(为什么需要它们、类型)、主键、外键 典型的远程面试如何进行:hr 发送链接到 Zoom(Skype、Google Meeting)。当你连接的某个时间,那里有 1 到 3 个人(技术专家、老板、人力资源)。在特别顽固的情况下,最多可达 8 人。首先你介绍一下你自己,然后是技术部分,然后是一个关于空缺和告别的故事(他们说他们什么时候会联系你或者下一步是什么)。在告别期间,您可以询问有关知识的反馈。我问:“你能告诉我,在我回答的过程中,你的耳朵哪里痛吗?” 很多人都会回应,但要做好被拒绝的准备。面试时他们会评估: 1. 你表达想法的能力和俄语知识(我知道一个候选人因俄语知识不佳而被拒绝的案例)。2. 以前的经历(他们可能会细致地询问你上一份工作是做什么的)。3. 当你受到压力时有足够的反应(有一次采访时人们开始不尊重地说话:无视我的回答,试图灌输他们的立场等等。我在开始后15分钟结束了采访,他们:这是一次压力很大的面试!) 4. 你的知识水平。我将在这里详细介绍。了解主题的定义仅占您期望的 10%。有必要了解它是如何工作的(至少在顶层)。愿意解释在开发的哪个阶段您将选择这个或那个解决方案。这比定义的准确性重要得多。我将通过两个例子来分析这篇论文。第一个例子:在一次采访中,我被问及 HashMap,我给出了定义:“这是一种存储键和值捆绑的数据结构。” 然后面试官问:和TreeMap有什么区别?答:不同的是HashMap对key进行了哈希处理,由于哈希处理,访问速度很快。面试官立刻要求告诉我们HashMap的内部结构,同时问了关于hashCode和equals的问题。它会更深入,直到你对答案满意或停止。经过两个月的面试和 hexlet 上的数据结构课程后,我才学会正确回答 HashMap。第二个例子:SOLID 概念。他们要求我给出一个我已经记住的定义。但一旦涉及到现实生活中的例子,问题就开始了。 Внимание!如果你不知道,那就不要发明它,而是这样说:我不知道这个话题,但我可以假设它是这样工作的。当一个人说着异端邪说,就好像他理解这个话题一样,许多技术专家都会被激怒。5. 您在工作讨论中的热情程度。您应该对此职位感兴趣并提出有关职位空缺的问题(不仅仅是虚构的问题)。6. 有时幽默(仅针对主题)和共同兴趣可以帮助您沟通。随意谈谈你的爱好;也许受访者也喜欢 Dota/足球/幻想。这对你作为候选人来说是一个优势。我知道一些情况,利益共同体对面试官糟糕的技术培训视而不见(你是一个正常人,我们会培训你)。<h3>第九章找工作,烈火的洗礼</h3>面试从四月下旬到七月中旬进行。第一次采访很尴尬,但逐渐情况改善到可以接受的程度。研究常见问题和反馈让他们自己感受到。前25次面试均未成功。此后,绝望的时刻开始了。感受:如果他们不以那个薪水雇用我怎么办?突然事情开始爆发:一周内,三家公司提交了提案。我选择了一家我了解具体情况的公司,而且还有不错的薪水和远程工作的机会。在面试过程中,我被问到了大约 30 个有关 Java 核心和 Spring 的问题,我回答正确了 97%。之后与上级部门进行了沟通,1.5周后我就找到了他们的工作。首先,当您从事任何工作时,您开始访问所有必要的系统并安装您需要的工具。花了一周半的时间,我接到了第一个任务:改变教室里的静态文本。当我打开项目时,我感觉很恶心:一个项目中有很多模块,很多类,测试等等。此时我迷失了方向,但第二位开发人员帮助了我并让我加快了速度。该错误在 10 分钟内得到修复,发布在 Git 中,发出拉取请求(请求合并两个分支,其他开发人员在其中检查您的代码),然后合并到主分支中。事实证明,一切并没有那么困难。直到第一个成熟的任务......在计划接下来两周的任务时,他们告诉我:你将与位于 OpenShift 上的另一个系统进行集成。这就是事情变得真正可怕的地方:OpenShift 是一个完整的技术集群:Docker、Kubernetes、Linux 等等。冷汗从我的背上流下来:好吧,我是一名贾维斯特人。会议结束后,我立即给开发人员打电话,他向我保证:这个系统的适配器已经编写好了,将某些类导入到我的项目中就足够了,之后我就可以安全地使用集成了。这又很有趣,直到开发人员展示了一个典型的集成:我看到为类似的集成创建了 20 多个类。此外,以前未见过的注释 @Value、@Builder、@NoArgsConstructor、@Getter 也被注意到 @Sl4f - 原来是 Lombook 项目(在互联网上阅读)。当开发人员向我解释如何做到这一点时,我试图写下所有类的联系,但我脑子里什么也没记住。最尴尬的时刻是对Intellij Idea缺乏了解:如何全局搜索项目、代码重构等。接下这个任务后,我明白了为什么需要OOP:这么大量的代码,需要将其划分为类;不在类外部使用的方法必须声明为私有,以免意外在另一个类中运行它们,等等。通过与另一个集成类比地编写我的集成,我了解到 CheckStyle 的存在 - 一个检查样式的特殊插件的代码,并且在修复错误(例如,多余的空格、大写字母的变量名、变量名太短)之前,您将无法编译项目。在击败 CheckStyle 后,我将代码发送给高级开发人员进行审查,并在一周内纠正了我的错误。总的来说,我很幸运,在我的团队中,我与第二个开发人员关系很好,他解释了很多事情。设备使用一个月后,我的第一次集成在集成功能展台上启动(测试了所有应用程序一起的工作),并且一切正常!胜利!下一个任务是创建一个类,允许通过 json 中的键隐藏数据。例如:有json {text:"JavaRush"} -> 处理 -> {text:"****Rush"}。这里有两个复杂的情况:可能存在嵌套 {text:{mytext:"JavaRush"}},更令人不愉快的是数组内部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (当然你需要隐藏所有text.mytext)。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。我试图写下所有类的联系,但我脑子里什么也没有记下来。最尴尬的时刻是对Intellij Idea缺乏了解:如何全局搜索项目、代码重构等。接下这个任务后,我明白了为什么需要OOP:这么大量的代码,需要将其划分为类;不在类外部使用的方法必须声明为私有,以免意外在另一个类中运行它们,等等。通过与另一个集成类比地编写我的集成,我了解到 CheckStyle 的存在 - 一个检查样式的特殊插件的代码,并且在修复错误(例如,多余的空格、大写字母的变量名、变量名太短)之前,您将无法编译项目。在击败 CheckStyle 后,我将代码发送给高级开发人员进行审查,并在一周内纠正了我的错误。总的来说,我很幸运,在我的团队中,我与第二个开发人员关系很好,他解释了很多事情。设备使用一个月后,我的第一次集成在集成功能展台上启动(测试了所有应用程序一起的工作),并且一切正常!胜利!下一个任务是创建一个类,允许通过 json 中的键隐藏数据。例如:有json {text:"JavaRush"} -> 处理 -> {text:"****Rush"}。这里有两个复杂的情况:可能存在嵌套 {text:{mytext:"JavaRush"}},更令人不愉快的是数组内部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (当然你需要隐藏所有text.mytext)。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。我试图写下所有类的联系,但我脑子里什么也没有记下来。最尴尬的时刻是对Intellij Idea缺乏了解:如何全局搜索项目、代码重构等。接下这个任务后,我明白了为什么需要OOP:这么大量的代码,需要将其划分为类;不在类外部使用的方法必须声明为私有,以免意外在另一个类中运行它们,等等。通过与另一个集成类比地编写我的集成,我了解到 CheckStyle 的存在 - 一个检查样式的特殊插件的代码,并且在修复错误(例如,多余的空格、大写字母的变量名、变量名太短)之前,您将无法编译项目。在击败 CheckStyle 后,我将代码发送给高级开发人员进行审查,并在一周内纠正了我的错误。总的来说,我很幸运,在我的团队中,我与第二个开发人员关系很好,他解释了很多事情。设备使用一个月后,我的第一次集成在集成功能展台上启动(测试了所有应用程序一起的工作),并且一切正常!胜利!下一个任务是创建一个类,允许通过 json 中的键隐藏数据。例如:有json {text:"JavaRush"} -> 处理 -> {text:"****Rush"}。这里有两个复杂的情况:可能存在嵌套 {text:{mytext:"JavaRush"}},更令人不愉快的是数组内部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (当然你需要隐藏所有text.mytext)。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。对于如此大量的代码,需要将其划分为类;不在类外部使用的方法必须声明为私有,以免意外在另一个类中运行它们,等等。通过与另一个集成类比地编写我的集成,我了解到 CheckStyle 的存在 - 一个检查样式的特殊插件的代码,并且在修复错误(例如,多余的空格、大写字母的变量名、变量名太短)之前,您将无法编译项目。在击败 CheckStyle 后,我将代码发送给高级开发人员进行审查,并在一周内纠正了我的错误。总的来说,我很幸运,在我的团队中,我与第二个开发人员关系很好,他解释了很多事情。设备使用一个月后,我的第一次集成在集成功能展台上启动(测试了所有应用程序一起的工作),并且一切正常!胜利!下一个任务是创建一个类,允许通过 json 中的键隐藏数据。例如:有json {text:"JavaRush"} -> 处理 -> {text:"****Rush"}。这里有两个复杂的情况:可能存在嵌套 {text:{mytext:"JavaRush"}},更令人不愉快的是数组内部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (当然你需要隐藏所有text.mytext)。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。对于如此大量的代码,需要将其划分为类;不在类外部使用的方法必须声明为私有,以免意外在另一个类中运行它们,等等。通过与另一个集成类比地编写我的集成,我了解到 CheckStyle 的存在 - 一个检查样式的特殊插件的代码,并且在修复错误(例如,多余的空格、大写字母的变量名、变量名太短)之前,您将无法编译项目。在击败 CheckStyle 后,我将代码发送给高级开发人员进行审查,并在一周内纠正了我的错误。总的来说,我很幸运,在我的团队中,我与第二个开发人员关系很好,他解释了很多事情。设备使用一个月后,我的第一次集成在集成功能展台上启动(测试了所有应用程序一起的工作),并且一切正常!胜利!下一个任务是创建一个类,允许通过 json 中的键隐藏数据。例如:有json {text:"JavaRush"} -> 处理 -> {text:"****Rush"}。这里有两个复杂的情况:可能存在嵌套 {text:{mytext:"JavaRush"}},更令人不愉快的是数组内部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (当然你需要隐藏所有text.mytext)。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。变量名太短)。在击败 CheckStyle 后,我将代码发送给高级开发人员进行审查,并在一周内纠正了我的错误。总的来说,我很幸运,在我的团队中,我与第二个开发人员关系很好,他解释了很多事情。设备使用一个月后,我的第一次集成在集成功能展台上启动(测试了所有应用程序一起的工作),并且一切正常!胜利!下一个任务是创建一个类,允许通过 json 中的键隐藏数据。例如:有json {text:"JavaRush"} -> 处理 -> {text:"****Rush"}。这里有两个复杂的情况:可能存在嵌套 {text:{mytext:"JavaRush"}},更令人不愉快的是数组内部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (当然你需要隐藏所有text.mytext)。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。变量名太短)。在击败 CheckStyle 后,我将代码发送给高级开发人员进行审查,并在一周内纠正了我的错误。总的来说,我很幸运,在我的团队中,我与第二个开发人员关系很好,他解释了很多事情。设备使用一个月后,我的第一次集成在集成功能展台上启动(测试了所有应用程序一起的工作),并且一切正常!胜利!下一个任务是创建一个类,允许通过 json 中的键隐藏数据。例如:有json {text:"JavaRush"} -> 处理 -> {text:"****Rush"}。这里有两个复杂的情况:可能存在嵌套 {text:{mytext:"JavaRush"}},更令人不愉快的是数组内部的嵌套: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (当然你需要隐藏所有text.mytext)。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。解决这个问题是相当困难的,但我做到了!第二个开发人员在这里说:用测试来覆盖这个开发。眼中满是惊愕。这就是我在实战中认识JUnit库的方式。单元测试的本质:你有输入数据,将其传递到方法中,并将接收到的数据与正确的结果进行比较(创建具有正确结果的变量)。我为我的库编写了 11 个案例,在这些案例中我检查了应用程序没有因 NullPointException 崩溃,并且它正确地隐藏了任何类型嵌套的数据。完成此任务后,我得到了一个新的集成,其特点如下:我必须从外部库导出 Spring Bean。至此,我成为了 Stack OverFlow 网站的常客。有一次甚至连官方 Spring 开发者也做出了回应。实施此集成后,我的试用期就结束了。老板祝贺我通过了试用期,我就开始写这篇文章。总共花了8个小时写这篇文章)感谢您的关注,希望这篇文章对您有用。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION