Share the skills of graduates and junior programmers to pass interviews with the experience of technical interviewers (Java backend direction)

    I originally wanted to share the experience of how graduates and junior programmers enter big companies, but after thinking about it, everyone has their own aspirations, and some programmers may want to enter growth or startup companies or other types of companies, so I just want to share some improvements Skills and skills for passing the interview, I will tell you the skills, the company you choose, the hatchback is convenient.

    Graduates and junior programmers (usually with less than 3 years of work experience) are mostly at the stage of their careers, and they often encounter the bottleneck of lack of actual project experience when looking for a job. As a technical interviewer, I am also often in the interview process. Feel the flaw in the lack of practical experience of these candidates. However, I have been a part-time java training teacher before, and I have also summarized the skills of these groups of people to improve their practical skills and interview skills. Recently, people have been asking me about this, so I simply wrote this into a blog post. 

1 It is best for college students to accumulate some experience in business projects, so that they can form the advantage of generation difference

    What kind of people do companies usually hire? We summarize the various answers into one sentence: people who need technical matching and have relevant project experience, simplify it and have relevant experience (generally refers to business project experience, and can make money if it is more straightforward), then Most of the technologies used match the requirements of the company. That is to say, if you have relevant experience, you will have a generational advantage compared with candidates who only have theoretical experience, so when I interview candidates, I often see Two or even three college students counterattack the scene.

    How to accumulate business project experience? Start your internship as soon as possible. If you can, you can find a software company to work in the summer vacation of your second year. If you have a teacher and a project outside, it is best to do it together. If the school arranges an internship, then you have to go. If you really can't find an internship company, you can also go to some websites to take part-time jobs for business projects.

    Please note here that the weight of general graduation design is not as heavy as that of commercial projects. If you only have experience in graduation design, you can only compete with this group of people who also have no commercial projects.

    What benefits can the generation advantage bring to you?

    1 When recruiting on campus, most people do not have experience in commercial projects, but if you do, it is very likely that your resume will pass the initial review, and in the actual interview, even if you have not answered questions such as basic knowledge of algorithms, as long as you allow The interviewer is convinced that you have done a business project, and the likelihood of passing the interview is much higher than that of people without a business project.

    2 When submitting resumes through websites and other forms, many companies actually have experience in commercial projects. If you don’t have any, you don’t even have the opportunity to interview, but if you have experience in commercial projects such as internships, then at least you have passed the initial stage. The possibility of selection is greatly increased.    

2 After entering the society, in the primary stage, choose a target, so that the project experience can be accumulated

    When I interview graduates and even junior programmers, I feel that there are very few people who have had actual project experience (this further verifies that experienced people are quite beneficial), and this group of people is more likely to pass the interview than about 3 years. programmers are much smaller. Let me analyze the common problems of this group of people.

     Question 1. There is very little experience in commercial projects, so the resume cannot even pass the screening, so there is no chance for an interview at all.

     Question 2, even if some project teams are in a hurry to ask for people, so some junior programmers get interview opportunities, but during the interview process, these people often cannot prove that they have really used relevant skills in the project. These people who only have theoretical experience The chances of someone passing the interview are very small.

    Question 3: Most junior programmers can usually know algorithms, logic problems and some simple speeches through preparation, but cannot prove that they have mastered some necessary skill points in the job, so they cannot prove that they are qualified for the job.

    The result of the above question is: In my hands, more than 80% of the programmers who have passed the interview have more than 3 years of experience. In fact, the interview requirements are not difficult, as long as they can work, but most junior programmers just can't prove this. .

    In response to the above problems, the suggestions given are: study and accumulation. 

     

    1 Set a clear goal for yourself, try to change as little as possible within 3 years after work, otherwise you have to start from scratch.

    2 For example, if the target direction is Java back-end development, then at work, don’t let it go, learn more from the seniors in the group, and master more knowledge points.

    3 Must focus on the theme of "performance optimization", such as memory performance optimization, database optimization, and master more optimization skills that can be used in projects.

    4 Even if you are not preparing for an interview recently, you have to read the interview questions while you are working. It is best to go out for interviews regularly. After all, everyone will take detours in the learning process. In a popular phrase, it is trial and error. Through continuous interviews, you can constantly revise your learning direction.

3 Come to the dry stuff, what are the recent standards of general companies in terms of Java Core, java Web and databases

     These are also the minimum criteria for getting a job, and the criteria for Java Core are as follows.

aspect

Criteria for Qualified Programmers

gather

1 For each linear table class object (such as Array, LinketList, ArrayList, Stack, Set, etc.) and key-value pair class objects (such as HashMap, etc.), basic traversal and addition, deletion and modification operations will be performed

2 Will use Iterator, generics, comparators and other common objects

exception handling

1 will use the try...catch...finally framework

2 Understand the types of various exceptions, such as runtime exceptions, database or IO exceptions.

I

Can complete basic IO operations, such as reading and writing files, reading and writing memory, reading and writing compressed packages, etc.

JDBC

Basic connection, adding, deleting, modifying and checking preprocessing batch operations

Multithreading

1 will create multiple threads, and through the keywords of notify, wait, sleep, etc., multi-threads can coordinately complete the tasks in the project.

2 Common keywords such as synchronized will be used, and there will be no conflict problems in the case of multi-threaded reading and writing.

3 It is best to use a thread pool.

Object Orientation and Design Patterns

Know basic concepts and syntax such as inheritance, abstract classes and interfaces

Garbage collection and memory performance management

Know the basic concepts, know the basic syntax of System.gc, etc., and know the basic configuration memory operations such as java -xms.

    The requirements for Java Web are roughly as follows:

aspect

Criteria for Qualified Programmers

JSP+Servlet

+JavaBean

(simple MVC framework)

1 Can use the framework of JSP+Servlet+JavaBean programming, know the basic MVC process.

2 It is best to understand some simple JS, DIV, CSS and other front-end technologies.

3 Know how to publish Web programs to the server.

Struts aspect

You don't need to know about it, because it's used less often

Spring aspect

1 Know the concepts of IOC and AOP and know how to use these technologies.

2 Know the development process of Spring MVC, and be able to develop Spring-based Web projects under the leadership of the project manager.

3 It is best to understand some components of Spring MVC.

Hibernate

(or ORM)

1 You can master only one ORM technology.

2 Can use Hibernate to do some basic operations such as additions, deletions, changes, and searches.

2 Familiar with the usage of some basic components, such as SessionFactory, Criteria and Session.

3 Know the basic usage of one-to-one, one-to-many, and many-to-many.

4 Know the concept of caching, it is best to understand skills such as performance optimization.

Spring和Hibernate整合

这点上合格和高级程序员的差别不大,要求是,能整合,能配置连接池。

    而在数据库方面,最低的要求体现在如下三方面的需求。

    第一,针对一类数据库(比如MYSQL,Oracle,SQL Server等),会基本的增删改查操作,会用一些基本的函数,会编写存储过程触发器索引等工具。

    第二,知道一些基本的对项目开发有帮助的概念,比如范式,索引,分区等。

    第三,能编写一些相对复杂的SQL语句,比如带连接,带子查询,嵌套查询等。

    在java web轻量级开发面试教程这本书里,我对此做了详细的说明。

    我知道,其实大多数的初级程序员都知道上述知识点,但无法有效地在项目中证明这点,而且,我之前也说了,上述仅仅是最低要求,接下来给出的要点将大大提升各位的面试成率。    

4  通过简历证明自己在项目中用过相关知识点,面试时尽量找机会说出来

    这里给出些准备简历时的注意要点。

    1 针对每份工作微调简历,在发给目标公司的简历中,多写些在该公司职位介绍时出现的关键字。

    2 少写不相干的工作经验,任何经验都往目标公司的职位要求上靠,比如目标公司的职位是java后端开发,你写一些linux上项目维护的经验或数据库DBA的相关经验尚属搭边,但如果写上测试或实施等经验,就属于不相干了。

    3 少写关于项目业务介绍的内容,因为目标公司不关心。

    4 这个是关键,一定得结合业务实际,写上自己有过相关技能的经验。

    比如目标公司要求有数据库优化的经验,那你就可以写,在xx项目里,对sql的执行时间有要求,所以在订单管理模块里,我用到了xx技术,实现了sql优化效果。

    类似的文字要多,涉及到的项目年限也请尽可能地长。这样当筛选简历的人和面试官看到你的简历时,不由得不信你第一有实践项目经验,第二在实践经验中用过相关技术。

    而在面试时,技术面试官一定会问到职位要求里的相关技能,你事先得准备。如果你能在面试过程中有条理地说出你是如何在项目里用到相关技术的,那么这样的说服力要比你单纯说“你知道“要强很多,甚至有些面试官听到你的这些叙述后,会少问或不问相关问题。

    

 

5 多准备些“你优于别人”的证据

    这些证据可以出现在简历中,当然你更应该在面试中说出来。

    我在面试中,往往会不得不从10个人符合要求的人里挑选出3人。(按我说10个人全要算了,但不行,预算不够)。这样如果某个候选人表现出优于别人的技能,那么这个人就一定是在同等条件里优先考虑的。

    如下是Java Core方面可以准备的亮点。

技术方面

可以说的亮点

Java集合对象

1 能根据项目的需求选用合适的集合对象,比如知道ArrayList和LinkedList的差异,并能合理选用。

2 能在合适的场合选用WeakHashMap。

3 可以适当讲一些集合的JDK底层实现代码。

异常处理方面

能在finally从句里写释放资源的代码

JDBC方面

1 能通过PreparedStatement的预处理方法来防止SQL注入。

2 能通过批处理来提升操作性能。

3 能通过实例讲述事务隔离级别的含义

多线程方面

1 会使用线程池

2 能通过锁或信号量等手段正确地处理多线程并发时的数据一致性。

    在下表里,我们列了些在数据库方面可以准备的亮点。

技术方面

可以说的亮点

建表

建表时需要根据项目的数据情况,考虑是采用三范式或是反范式。

SQL调优

1 可以通过查看日志等方式看哪些SQL需要调优。

2 可以通过执行计划查看SQL的所消耗的代价,并据此调优。

3 可以通过建索引,建分区等手段来优化SQL性能。

事务

1 可以说下JDBC或Spring里是如何管理事务的。

2 可以说下Spring里的声明式事务的做法和优点。

3 可以举例说明事务隔离级别和事务传播机制的用法。

分布式数据库

1 可以通过水平或竖直等方式的方式来拆分数据库,从而减轻对单表访问所需要的代价。

2 可以通过集群等方式来承担对数据库的过量的访问请求。

NoSQL和Hadoop

这两个本身就是个亮点,如果大家用过,可以结合项目来说明。

    下面里列了Java Web方面可以准备的亮点

技术方面

可以说的亮点

Spring MVC架构

1 可以说下Spring的IOC和AOP是如何优化项目结构的。

2 可以说下拦截器等Spring组件对项目的帮助。

ORM,比如Hibernte或Mybatis

使用这种ORM技术时,如何优化访问和操作数据库的性能。

Spring和Mybatis等的整合

可以讲下整合框架的细节,并可以举例说明整合后的框架能很好地适应需求的变更。

    此外,大家还可以在Linux使用技能以及项目管理软件的使用经验方面展示自己的亮点。这里请注意,一定找合适的机会“顺带”地说,如果没机会宁可别说,更不能仗着有所准备就直接自说自话地说。否则的话,反倒可能会得到“表达能力不清晰”或“叙述条理混乱”等的不良评价。

    

6 总结

    本文涉及到的点有些广,这里来总结下本文中提到的观点。

    1 在校生尽可能早地积累些商业项目的经验。

    2 工作后找准发展方向,然后通过不断的面试来调整自己的学习路线。

    3 简历中的项目描述应该尽量与目标公司的需求一致,在面试中也应当尽量证明这点。

    4 多积累些优于别人的优势。

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324607123&siteId=291194637