面java
‘壹’ java 二面一般会面试什么内容
Java程序员应聘一般要经过笔试和面试。作为一个技术人员,特别是刚出道的,笔试的成绩是比较重要。以下是我经过几次笔试总结的一些经验教训。
一般来说,试题会分为三个部分,Java基础、数据库基础和综合题。
首先是Java基础,这个很简单,也就是考考你对Java语言本身的理解,包括语法,类库的使用等。有选择题,也会有写代码题。写代码的时候认真仔细就是了。基础题答案一般都比较死,所以尽量不要错。在这,出一道我遇到的题考考大家,Java编程:把American,Japan,China,France,Brazil按英文字母排序。说说思路就行了:)
其次是数据库。准确的说,考的不是数据库,而是SQL语句。一般题型是,给两三个表,然后让你根据需求写SQL。最普通的就是学生表、选课表和成绩表。要掌握的就是连接查询,还有就是一些函数(建表、表操作等就不说了哈)。其实这些都相当简单,但是往往被新手忽略。我就遭过,因为有半年没写过SQL了,连接查询搞忘完了,有两次笔试都空起,结果可想而知。这些是必备技术,千万不能空起啊!
然后是综合题。之所以说是综合题,是因为包含的内容比较多,一般都是主观题。这里,人家是想看看你对Java高级技术以及周边技术的了解程度和运用能力,说白了,就是考概念和考应用题。这里说的Java高级技术,也就是J2EE架构中的技术,这些不会的话,人家是不得要你的。如果你会一些流行的技术框架,那就更好了。所谓Java周边技术,包括HTTP,HTML,XML,UML,JavaScript,CSS等,要求一般不是很高,要了解,比如让你用HTML写个表单你要会。关于刚才提到的技术或者框架,希望要了解其工作的原理和机制,一般要考,比如让你说说Struts的MVC。关于应用题,可能出一道网络应用来考。
以上就是我笔试的经验,一般是这样,不过我也遇到过变态的。一次笔试,就被彻底甩翻,C/C++、数据库、Java技术、Shell编程、网络协议、Unix、软件工程全部上了。
如果笔试做的好,那就成功大半了,不过不要轻视面试哦!
‘贰’ java工程师面试时最看重的是什么
一、专业技能
熟练的使用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框架(AngularJS)和JavaScript模板引擎(HandleBars)进行项目开发的经验。
熟悉常用的关系型数据库产品(MySQL、Oracle),熟练的使用SQL和PL/SQL进行数据库编程。
熟悉面向对象的设计原则,对GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验,熟练的使用UML进行面向对象的分析和设计,有TDD(测试驱动开发)和DDD(领域驱动设计)的经验。
熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服务器和应用服务器的使用,熟悉多种服务器整合、集群和负载均衡的配置。
熟练的使用产品原型工具Axure,熟练的使用设计建模工具PowerDesigner和Enterprise Architect,熟练的使用Java开发环境Eclipse和IntelliJ,熟练的使用前端开发环境WebStorm,熟练的使用软件版本控制工具SVN和Git,熟练的使用项目构建和管理工具Maven和Gradle。
项目介绍
本系统是X委托Y开发的用于Z的系统,系统包括A、B、C、D等模块。系统使用了Java企业级开发的开源框架E以及前端技术F。表示层运用了G架构,使用H作为视图I作为控制器并实现了REST风格的请求;业务逻辑层运用了J模式,并通过K实现事务、日志和安全性等功能,通过L实现缓存服务;持久层使用了M封装CRUD操作,底层使用N实现数据存取。整个项目采用了P开发模型。 说明: E通常指spring(Java企业级开发的一站式选择); F最有可能是jQuery库及其插件或者是Bootstrap框架,当然如果要构建单页应用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G显然是MVC(模型-视图-控制),最有可能的实现框架是spring MVC,除此之外还有Struts 2、JSF以及Apache为JSF提供的MyFaces实现; H是JSP,JSP作为MVC中的V,也可使用模板引擎(如Freemarker和Velocity)来生成视图还可以是各种文档或报表(如Excel和PDF等); I是Servlet或者自定义的控制器,他们是MVC中的C,当然Spring MVC中提供了作为前端控制器的DispatcherServlet; J通常是事务脚本; K应该是AOP(面向切面编程)技术; L目前广泛使用的有memcached和Redis; M的选择方案很多,最有可能的是hibernate和MyBatis,也可以两种技术同时运用,但通常是将增删改交给hibernate来处理,而复杂的查询则由MyBatis完成,此外TopLink、jOOQ也是优秀的持久层解决方案; N底层的数据存取传统上是使用关系型数据库,可以是MySQL、Oracle、SQLServer、DB2等,随着大数据时代的来临,也可以采用NoSQL(如MongoDB、MemBase、BigTable等)和其他大数据存取方案(如GFS、HDFS等); P是项目的开发模型,可以是瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、RAD模型等。项目开发流程
1、可行性分析:可行性分析报告、项目开发计划书;
2、需求分析:需求规格说明书OOAD(用例图、时序图、活动图);
界面原型:帮助理解需求、业务层设计时推导事务脚本;
3、设计:概要设计说明书、详细设计说明书;
*抽取业务实体(领域对象):类图、E-R图(概念设计阶段);
分层架构:确定各层的技术实现方案(具体到使用的框架、数据库服务器、应用服务器等);
*业务层设计:事务脚本模式(事务:用户发送一次请求就是一个事务;
脚本:一个方法或一个函数;
*事务脚本:把一次请求封装为一个方法或一个函数;事务脚本模式:一个事务开始于脚本的打开,终止于脚本的关闭);
*业务层涉及的对象有三种类型:事务脚本类(封装了业务的流程)、数据访问对象(DAO,封装了持久化操作)、数据传输对象(DTO,封装了失血/贫血领域对象),三者之间的关系是事务脚本类组合(聚合)数据访问对象,这二者都依赖了数据传输对象正向工程(UML类图生成Java代码)和逆向工程(Java代码生成UML类图)数据库物理设计(ER图转换成表间关系图、建库和建表、使用工具插入测试数据);
3、编码;
4、测试:测试报告、缺陷报告;
*单元测试:对软件中的最小可测试单元进行检查和验证,在Java中是对类中的方法进行测试,可以使用JUnit工具来实施;
*集成测试:集成测试也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统进行测试;
*系统测试:将已经确认的软件、硬件、外设、网络等元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案;
*验收测试:在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务;
5、交付和维护:用户手册、操作手册;版本控制:CVS/SVN/Git
自动构建:Ant/Maven/Ivy/Gradle
持续集成:Hudson/Jenkins
负载均衡服务器:F5、A10;
应用服务器: HTTP服务器:Apache、NginX(HTTP、反向代理、邮件代理服务器);
Servlet容器:Tomcat、ResinEJB容器:WildFly(JBoss Application Server)、GlassFish、Weblogic、Websphere;
数据库服务器:MySQL、Eclipse、Oracle;
图表工具:基于jQuery的图表插件(如jQchart、Flot、Charted等)、Chart.js、Highcharts等。
报表工具:Pentaho Reporting、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等。
项目是为哪个公司开发的?项目的投入是多少?
有多少人参与了项目开发?整个团队中,测试人员、开发人员、项目经理比例是多少?
项目开发了多长时间?项目总的代码量有多少?你的代码量有多少?
项目采用了怎样的开发模型或开发流程?项目的架构是怎样的?项目的技术选型是怎样的?
你在项目中担了怎样的职责?是否经常开会或加班?项目完成后有哪些收获或是经验教训?
项目中最困难的部分是什么?如何解决团队开发时遇到的各种冲突?
我注意到你们使用了X技术,请问你们是如何解决Y问题的?
为什么你们的产品使用了X技术而不是Y技术?据我所知,X技术虽然有A、B、C等好处,但也存在D和E问题,而Y技术可以解决D和E问题。
我对您说的X技术不是太熟悉,但我感觉它是一个不错的解决方案,您能多讲讲它的工作原理吗?
你们团队是如何进行项目规划的?一周会有几次例会?每周的代码量大概是多少?
就X问题我能想到的解决方案目前就只有Y了,请问您会怎么解决这个问题?
- S.A.R法则是指先描述问题的场景,然后解释你采取的行动,最后陈述结果。
声音适中、口齿清楚、面带微笑、个人形象精神,讲礼貌。
主动跟面试官聊他感兴趣的话题,让面试官满意。
主动的大胆的跟面试官聊自己熟悉有经验的内容:项目、技术点等,做到扬长避短。
一定要表达自己非常想得到这个岗位,自己很愿意学习不懂的技术。
根据自己的实际水平提出合理的待遇要求。
学习能力(搞IT行业的人需要不断的了解新的技术、工具和方法)
团队意识(相比个人英雄主义,IT行业更倡导团队合作)
抗压能力(很多IT企业的工作强度相对来说还是比较大的)
说明: 上面罗列的这些东西并不是每一项你都要烂熟于心,根据企业招聘的具体要求可以做相应的有针对性的准备。但是前6项应该是最低要求,是作为一个Java软件工程师必须要具备的专业技能。
二、项目经验
三、项目管理
四、系统架构
五、第三方工具(插件)应用
六、面试提问
七、面试时可以反问面试官的问题
八、S.A.R.法则
九、面谈原则
十、自我评价
‘叁’ 面渣逆袭:Java基础面试题,46道Java基础八股文(4.8万字,30+手绘图)
Java,自1995年诞生以来,凭借其"一次编写,到处运行"的理念,成为企业级开发、移动应用、网站开发和大数据处理等领域不可或缺的利器。Java的版本包括Java SE、Java EE和Java ME,以及一系列强大的框架和工具,如JVM、JDK和JRE,它们共同构建了Java的跨平台基石。
Java语言以简单性为设计初衷,其特性包括面向对象(OOP)、平台无关性(JVM)、安全性(通过沙箱机制)、健壮性和多线程支持。JVM负责运行Java字节码,JDK包含JRE和开发工具,而JRE则包含了执行环境和核心库。这种设计使得Java软件能够在不同的操作系统上无缝运行,降低了开发成本和提高应用程序的可用性。
Java的跨平台能力主要通过中间件技术实现,如JVM通过标准化执行环境来确保代码的通用性。此外,虚拟机技术如Java的JVM将代码编译成中间代码(字节码),从而实现跨平台运行,如React Native和Flutter等框架则进一步简化了代码编写,隐藏了底层平台差异。
容器化技术,如Docker,将应用程序打包成可移植的容器,确保在任何支持的平台上都能一致运行。字节码作为编译后的中间代码,提供了跨平台、安全和高效的优势,同时支持编译与解释并存,源代码先编译成字节码,JVM负责解释或进行JIT(即时编译)优化。
Java的基础数据类型包括整数、浮点数、字符、布尔值,以及引用数据类型如类、接口和数组。类型转换分为自动和强制,如Integer装箱和拆箱简化了基本类型与对象的转换。逻辑运算符&和&&的区别在于&执行右侧表达式,无短路行为,而&&的短路特性在左侧为假时跳过右侧操作。
Java的switch语句支持多种数据类型,如byte和String(从Java SE 7开始)。break、continue和return分别用于控制循环和方法的执行流程,如在for循环中,continue跳过剩余部分进入下一轮,return则退出当前方法。
在面向对象编程中,Java强调数据封装和方法的结合,如Car类通过类结构处理汽车的逻辑。封装、继承和多态是其核心特性,类和接口用于共享功能,重写和重载则提供代码复用和灵活性。访问修饰符如public、protected、default和private定义了不同范围的可见性。
Java的this关键字用于引用当前对象,区别于局部变量。抽象类和接口提供不同的抽象层次,Java 8引入的默认方法和静态方法,以及接口的默认实现,进一步扩展了语言的灵活性。final关键字用于标识不可变性,对变量、方法和类进行限制,增强代码安全性和可读性。
类的实例化示例展示了final、finally和finalize的区别,以及==和equals的差异,以及重写hashCode和equals的必要性。参数传递在Java中采用值传递和引用传递,理解其影响对代码设计至关重要。
字符串处理是Java中的重要部分,String类的不可变性和StringBuffer和StringBuilder的可变性为不同场景提供了选择。字符串常量池优化内存,而字符串拼接在Java 7后与StringBuilder的行为保持一致。
Java异常处理体系,包括Error和Exception的分类,以及try-catch、finally、throw和throws的使用,对于错误处理和方法签名声明至关重要。IO流、NIO、BIO和AIO的异步特性在处理并发和性能优化中发挥关键作用。
序列化和反序列化用于数据持久化和网络通信,Serializable接口和transient关键字的使用确保数据的一致性和安全性。泛型、注解和反射等高级特性,如Spring的Autowired,提供了灵活的编程工具和设计模式。
Java的新特性,如Lambda表达式、Stream API、Optional类和Nashorn引擎,以及日期时间API和并行处理功能,都展示了Java语言的持续进化和适应性。Java处理空指针的方式,如try-catch和Objects类的requireNonNull,展示了对程序员友好的错误处理策略。
以上内容总结了Java基础面试中的重要知识点,无论是编程基础、设计模式还是最新技术动态,都是Java开发者不可或缺的技能。通过深入理解和实践,你将能更好地应对各种面试挑战。
‘肆’ java二面是不是基本就定了
不是。因为java二面是通常是在java求职过程中的第二轮面试,一般意味着你在初面中表现出色,已经通过了初步筛选,进入到更进一步的评估阶段。尽管二面表明你已经获得了一定的认可,但并不意味着你已经被确定录用。在二面中,雇主可能会更加深入地评估你的技能、经验和适应能力,还可能会与其他候选人进行比较。最终录用决定通常是综合考虑多个因素,然后再进行评定人选,是还有可能刷下去的,因此java二面不是基本就定了。
‘伍’ Java面试的十个小技巧
java面式的十个小技巧
1.简要介绍Java程序的健壮性。
答:Java程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对干类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏。
2.简要介绍Java如何实现安全性。
答:首先Java删除了指针这就避免了非法的内存操作,所有对内存的操作都必须通过对象的实例来实现。而且当我们从网上下载代码执行是它的安全系统能确保恶意程序不会随便访问我们本地计算机的资源。
3.为什么说Java语言是完全面向对象的?(其实我觉得它不是完全面向对象的)
答:因为它不支持任何面向过程的程序设计技术它的所有程序设计技术都是用类来实现的。
另答:因为它有8种简单数据类型不是面向对象的,可以直接使用它,用static申明悉姿猛的变量或方法不是面向对象的,因为它不属干任何一个对象,要调用它可以直接使用,不用对它进行实例化(这种方法还在争论中)。
4.为什么说Java是解释性的?
答:因为我们在执行JaV文件时,编译器会先把代码译成字节码文件,这是一种中间代码,然后Java解释器才进行执行。
5.简要介绍Java的平台无关性。
答:Java程序是在虚拟机上执行的,只要安装了JAVA虚拟机它就可以以字节码的形式在任何平台上执行。
6.简要介绍Java的多态性。
答:多态性是指同名的不同方法在程序睁桥中共存,系统根据不同的情况调用不同的方法实现不同的功能。实现多态性的方法有两种:覆盖实现,重载实现。
7.简要介绍Java是强类型检查语言。
答:JaVa对数据类型的检查非常严格,在定义和用变量时必须先指定其类型而且它只允许数据类型的向上提升,而且不允许出现会出现数据丢失的附值(如把小数附给整形)。
8.int和Integer有什么区别?
答:int是简单数据类型(整形)而Integer是整形的封装类。
9.简要介绍String和String Buffer的区别?
答:String类代表不可变字符串。在值创建之后就不能被改变。而StringBuffer.是可变的字符序列,初始容量16字节,通过某些方法可改变其内容和长度册茄。
10.简要介绍Java的垃圾回收机制。
答:Java的垃圾回收机制就是:当一个对象没有任何引用时,该对象便会启动垃圾回收器调用finalize0方法以配置系统资源或执行相关的清除操作。
‘陆’ Java一面是技术还是人事
技术。
一般一面是技术面,主要考察技术问题。二面是人事面,主要考察人际关系处理,工作态度等问题。三面是领导面,主要是看看综合能力,优缺点等问题。