Java工程师面试必备技能盘点:核心技术与项目经验详解

创始人
2024-12-15 23:35:59
0 次浏览
0 评论

java工程师面试时最看重的是什么?

1.专业技能

精通Java语言面向对象编程,有良好的编程习惯,熟悉常见的JavaAPI,包括集合框架、多线程(并发编程)和I/O(NIO)、Socket、JDBC、XML、反射等。

熟悉基于JSP和Servlet的JavaWeb开发,深入了解Servlet和JSP的工作原理和生命周期,熟练使用JSTL和EL编写无脚本动态页面,以及监听器的使用,过滤器等拥有使用Web组件和MVC架构模式开发JavaWeb项目的经验。

深入了解Spring的IoC容器和AOP原理,熟练使用Spring框架管理各种Web组件及其依赖,熟练使用Spring管理事务、日志、安全等。
拥有使用SpringMVC作为表示层技术以及使用Spring持续支持Web项目开发的经验,并熟悉Spring与其他框架的集成。

精通Hibernate、MyBatis等ORM框架,熟悉Hibernate、MyBatis核心API,深入了解Hibernate的关联映射、继承映射、组件映射、缓存机制、事务管理和性能调整。

熟练使用HTML、CSS和JavaScript进行Web前端开发,熟悉jQuery和Bootstrap,对Ajax技术在Web项目中的使用有深入的了解,并使用过前端MVC框架(AngularJ)和JavaScript模板引擎(HandleBars)具有项目开发经验。

熟悉常用关系型数据库产品(MySQL、Oracle),熟练使用SQL、PL/SQL进行数据库编程。

熟悉面向对象设计原理,深入了解GoF设计模式和企业应用架构模式以及相关实际开发经验,熟练使用UML进行面向对象分析和设计,拥有TDD(测试技能驱动开发)和DDD(领域驱动设计)经验。

熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉多服务器集成、集群和负载均衡的配置。

熟练使用产品原型工具Axure,熟练使用设计建模工具PowerDesigner、EnterpriseArchitect,熟练使用Java开发环境Eclipse、IntelliJ,熟练使用前端开发环境WebStorm,熟练使用软件版本掌握工具SVN和Git,熟练使用项目构建和管理工具Maven和Gradle。

注意:您并非需要了解上面列出的所有内容。
您可以根据公司招聘的具体要求,做出相应的针对性准备。
但前6项应该是最低要求,是Java软件工程师必须具备的专业技能。

2.项目经历

项目简介本系统是X受Y委托为Z开发的系统,系统包括A、B、C、D等模块。
系统采用Java企业级开源框架E和前端技术F。
表现层采用G架构,以H为视图,I为控制器,采用J模式实现REST风格的请求,并实现通过K实现交易、日志、安全等功能,并实现缓存;通过L提供服务。
持久层使用M封装CRUD操作,底层使用N实现数据访问。
整个项目采用P开发模式。
注:E通常指Spring(Java企业开发一站式选择)F很可能是jQuery库及其插件或者Bootstrap框架,当然如果你想要构建单页应用程序。
SPA),最好的解决方案是前端MVC框架(如AngularJS)和JavaScriptpt模板引擎(如HandleBars显然是MVC(模型-视图-控制),最有可能的实现框架是springMVC。
此外,还有Struts2、JSF和JSFJSP的MyFaces实现、MVCV等JSP也可以使用模板引擎(如Freemarker和Velocity)生成视图,视图也可以是不同的文档或报告(如Excel和PDF、等);在MVC中当然SpringMVC提供了DispatcherServlet作为前端控制器;J通常是事务脚本K应该是AOP(面向切面编程)技术并发应用,但通常增删改查都是通过休眠来处理的,而复杂的查询则由MyBatis完成,此外,TopLink和jOOQ也是优秀的持久层解决方案,Oracle、SQLServer、DB2等,随着大数据的出现数据时代,NoSQL(如MongoDB、MemBase、BigTable等)和其他大数据访问解决方案(如GFS、HDFS等)也可以采用项目的模型,可以是瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、RAD模型等

项目开发流程1、可行性分析:可行性分析报告、项目开发计划2、需求分析:需求规范OOAD(用例图、序列图、活动图:帮助理解需求;并导出事务脚本3、设计:大纲设计说明、详细设计说明;分层架构:确定各层的技术实现方案(具体到所使用的框架,数据库服务器、应用服务器等);*业务层设计:事务脚本模式(事务:用户发送一个请求就是一个事务;脚本:一个方法或者函数;*事务脚本:将一个请求封装为一个方法或者一个函数)功能:一个事务以脚本开始,以*业务层结束,涉及到三类对象:事务脚本类(封装业务流程)、数据访问对象(DAO、封装持久化操作)和数据传输对象(DTO,封装失血/贫血字段对象)。
一个事务脚本类,它组合(聚合)数据访问对象,这两者都依赖于数据传输对象进行进一步开发(UML类图生成Java代码)和逆向开发(生成Java代码UML类图)数据库的物理设计(转换ER图转表关系图,建立数据库和表格,使用工具插入测试数据3.编码4.测试:测试报告,检查类中可测试单元;在Java中,对类中的方法进行测试,可以使用JUnit工具来实现:集成测试也称为组装测试。
在单元测试的基础上,将所有模块按照设计要求组装成子系统进行测试:结合经过验证的软件、硬件、外设、网络等要素,对信息系统进行各种组装测试,并对整个产品系统进行确认系统测试,测试的目的是验证系统是否满足定义;需求规范,找出与需求规范的差异或矛盾,并提出更完整的解决方案:*验收测试:对软件产品进行完整的单元测试、集成测试和系统测试。
软件测试在测试后、产品发布前进行。
这是技术测试的最后阶段,也称为交付测试。
验收测试的目的是确保软件准备就绪,可以被最终用户用来执行软件既定的功能和任务5.交付和维护:用户手册、使用说明书;

3.项目管理

版本控制:CVS/SVN/Git

自动构建:Ant/Mavno/Ivy/Gradle

持续集成:Hudson/Jenkins

IV系统架构

负载均衡服务器:F5、A10;

应用服务器:HTTP服务器:Apache、NginX(HTTP、反向代理管理、电子邮件代理服务器);Servlet容器:Tomcat、Resin

EJB容器:WildFly(JBossApplicationServer)、GlassFish、Weblogic、Websphere;库服务器:MySQL、Eclipse、Oracle

5个第三方工具(插件)

图表工具:基于jQuery的图表插件(如jQchart、.Flot、Charted等)、Chart.js、Highcharts等

报表工具:PentahoReporting、iReport、DynamicReports等。

文档处理:POI、iText等。

工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。

作业调度:Quartz、JobServer、Oddjob等。

缓存服务:EhCache、memcached、SwarmCache等。

消息队列:Open-MQ、ZeroMQ、ActiveMQ等。

安全框架:Shiro、PicketBox等。

搜索引擎:IndexTank、Lucene、ElasticSearch等。

Ajax框架:jQuery、ExtJS、DWR等。

UI插件:EasyUI、MiniUI等。

富文本框:UEditor、CKEditor等。

6面试问题

该项目是为哪家公司开发的?该项目的投资是多少?

有多少人参与了项目开发?整个团队中测试人员、开发人员和项目经理之间的关系如何?

开发这个项目花了多长时间?该项目的总代码量是多少?你有多少代码?

项目采用哪种开发模式或开发流程?该项目的结构是什么?该项目的技术委员会是什么?

您在该项目中负责什么?你是否经常开会或加班?项目完成后有哪些收获或经验教训?

该项目中最困难的部分是什么?如何解决团队发展过程中出现的各种冲突?

7你可以在面试时向面试官提问。

我注意到你使用了X技术。
你是如何解决问题Y的。

为什么你的产品使用技术X而不是技术Y?据我所知,虽然技术X有优点A、B、C等,但它也存在问题D和E,而技术Y可以解决问题D和E。

我不那么认为熟悉你所说的X技术,但我觉得这是一个很好的解决方案。
你能告诉我更多关于它是如何工作的吗?

您的团队如何规划项目?每周有多少次例行会议?每周大约编写多少代码?

对于X问题,我能想到的唯一解决方案是Y。
你会如何解决这个问题?

8S.A.R规则

S.A.R规则意味着首先描述问题场景,然后解释你采取的行动,最后陈述结果。
9.面试原则

温和、吐字清晰、微笑、个人形象积极、有礼貌。

主动和面试官谈论他感兴趣的话题,让面试官满意。

主动出击,大胆地和面试官谈论你熟悉、经历过的内容:项目、技术点等,扬长避短。

一定要表达出你确实想得到这个职位,并且愿意学习你不懂的技术。

根据自己的实际水平设定合理的治疗要求。

10自我评价

学习能力(IT行业的人必须不断了解新技术、工具和方法)

团队意识(相对于个人而言)英雄主义、IT-行业提倡团队合作)

抗压力(很多IT公司工作强度比较高)

23种设计模式之访问者模式

在设计模式中,访问者模式是一种将访问与访问逻辑分离的结构模式,它将对象元素的操作与对象结构分离,以实现更灵活的操作方式。
这种模式基本上将数据采集和处理操作分开,给用户更高的灵活性,也让代码维护更容易。
访问者模式的本质是让访问过程成为一个可扩展、可重用的对象,可以与任何相关对象进行交互。
Visitor可以作为类的抽象接口,允许不同的对象实现不同的访问逻辑,这样就可以用同一个Visitor来访问不同的对象,从而实现灵活性和多样性。
为了有效管理访问过程,模型中引入了一个Manager类,负责存储列表中需要访问的对象。
当请求访问时,管理器类通过遍历列表将要访问的对象传递给访问者。
这种方法使得访问过程更加简单,避免了访问多个对象时需要进行判断和转换的复杂性。
这种访问方式与典型的委托方式类似,可以让访问者更好地控制访问哪些对象。
引入术语“双重转换”是为了清楚地解释访问者模式的优点:访问在对象结构和访问者之间分两层传递。
具体来说,当访问者访问特定对象时,该对象可以根据其特殊属性选择特定的处理方法。
这种机制给系统带来了更大的灵活性,因为可以轻松地添加新的访问而无需修改原始对象结构。
在实现访问者模式时,代码结构的设计要考虑效率和清晰性。
访问者模式的主要优点是提高了类独立性,即可以通过引入新的访问者来适应不同的访问逻辑,而无需修改原始对象的实现细节。
这样的设计使得系统更容易扩展和维护。
然而,在Java开发框架内,有诸如“迭代器”模式之类的机制来提供类似的功能。
“Iterator”模式专门用于创建迭代器,用于一一遍历数据结构中存储的元素,而“Visitor”模式则用于对补集数据结构中存储的数据进行特殊操作。
虽然“迭代器”模式更注重遍历,但“访问者”模式提供了更灵活的访问和操作方法,从而在复杂的应用程序中提供了更多的设计选项。

axis打包arr,ojdbc.jar包怎么没有打进去

1.检查这个Class是否已经被加载过(即缓存中是否有这个Class),如果是,则到8,如果没有,则到22。
如果父类加载器不存在(无父类,则父类加载器)元素必须有一个引导类加载器),最多43。
请求加载父类加载器,如果成功,则执行步骤8,如果不成功,则执行步骤54。
请求jvm从引导类加载器加载,如果成功,则转至步骤85。
找到类文件(从与该类加载器关联的类路径中)。
)。
如果未找到,请转至7.6。
从文件加载类,转到8.7。
抛出ClassNotFoundException。
8.恢复Class.tomcat中类和jar文件的加载顺序。
我们可以从ClassLoader的双亲委托模式加载机制中了解到这一点。
包名和类名相同的两个class文件不再是同一个jar包。
如果一个class文件已经被加载到Java虚拟机中,那么后续的同一个类的文件将不会被加载。
热门文章
1
Java字符串分割技巧:轻松获取逗号前的... java任意一个字符串,当它碰到第一个逗号时,返回逗号前面的字符串,例如:str...

2
SQL多表连接查询全解析:JOIN语句应... sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...

3
Java中字符串类型详解:String与... 变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...

4
JavaSE与JavaEE:从基础到企业... javase 和javaee的区别?JavaSE和JavaEE...

5
Java程序员面试必知:核心技术问答与技... java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...

6
Java.exe与Javaw.exe:区... 程序中java和javaw有什么区别java和javaw的区别:两者都是Java...

7
深入解析:Java中的javax包及其与... JAVA导入时,什么是javax?awt是java1.0,swing是java2...

8
Java基础教程:深入理解File和Pa... java中if(!file.exists())什么意思?”“在Java >...

9
Java字符串搜索与位置定位技巧解析 在java中求一个字符串在另一个字符串中多次出现的位置。用indexOf方法怎么...

10
Java静态资源加载机制解析:静态方法与... java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用...