迅闻网
让更多人看到你

java面试题大汇总(java面试题高级工程师)

java面试题大汇总

面试前面也总结了一和二,这第三篇或许更倾向所以内心的独白篇和面试技巧总结吧…..
一、独白
之前也面试他人,现在轮到自己找作业,怎样说呢,每个面试官的观念不相同,面试的方法就不相同,比如我面试他人我喜欢问项目中他用到了那些,然后针对用到的技术去问一些问题,或许说关于某些场景的一些技术完结方案是我特别喜欢问的,比如当你的接口服务数据被人截包了,你怎样防止数据恶意提交?相对来说,Java的底层和基础会问的少一点,当然问的少不是代表不问,而是说侧重点在于你的所做过的项目和你的规划思路怎样。当然,懂基础和底层更好,这样能让你知其然,更知其所以然,写出来的代码和程序更具有健壮性和可维护性。所以说,基础仍是很重要的。
现在轮到自己出去面试,怎样说呢,其实仍是挺严峻的,原以为自己不会因此严峻或许焦虑,实际上,仍是有的,在没找到合适的作业的时分,甚至晚上有点睡不着觉,总觉着有什么事压在心头,睡觉都不安心。已然睡不着,那仍是看看资料吧,我有个习气,睡前亮点问题,第二天早上就能想到答案,睡前记点资料,第二天早上就能记住特别深入,不说废话了,直接进入正题吧。
二、面试技巧
1、背熟你的简历
原因:面试的第一个问题,一般都是让你简略介绍下你自己,或许介绍一下你最近的项目,而一个面试者,假设连自己的简历都无法熟知,对里面说到的项目、技术都无法描绘清楚的话,我想没有哪家公司会承受这样的,哪怕你是超级人才,你自我表述不行,估量也会为此头疼,所以,切记:一定要背好自己的简历,不要求你能全部记下,至少要熟记你最近所待过的两家公司,这两家公司里面你做过的项目,你担任的模块,项目里面用到的技术以及相对应的技术完结方案(这个尤为重要)。
2、深化了解并熟记部分Java基础知识
原因:大部分公司不管面试初级仍是高级,不管是书面考试仍是面试,都会问到一系列基础题,这些基础题大约涵括jvm、字符串、集结、线程等等,假设说每一个让你死记硬背你必定记不住,那么就是了解中回想了,拿jvm来说,假设让你谈谈你对jvm的了解,那么你首要得知道JVM有哪些结构组成,每个结构用来做什么的,然后考虑一个Java方针从创建到回收,怎样途径JVM这些结构的。假设你从这些方面来归纳回想,信赖事半功倍,并且你了解的更透彻。至于假设让你谈集结,举例List集结下面ArryList、LinkedList、Vector等集结的差异,那么相同的方法,你需求了解每一个的结构组成是什么,你才干知道他有什么效果,这样你在往常的用法上会更精粹,并且在面试过程中,也不至于哑口无言。
3、坚持自傲心和沉重镇定的心态
原因:面试过程中,自傲是少不了的,信赖你可以,面试的路上可以自己对自己说一句:IbeliveIcan!横竖我就是这么做的,自我的心里暗示吧,其实面对面试官的时分,你自傲的情况也会让面试官觉得你是个很有底气的人,至少从感觉上会给你打个高分。其他还有就是坚持沉重镇定,假设是让你提供技术方案或许说说某个技术原理,没必要一严峻一咕噜的什么都说,你可以对面试官说:我先想想,然后自己拼装回想中的知识,拼装下语言,有条理的说出来,这样能更好的表现你的才干,不是吗?面试谁都会严峻,我也会严峻,有时分清楚记住的知识点忘了,没关系,大胆的说忘了,或许直接说不知道。要记住,有部分不知道没关系,假设全都知道,那你应该是CTO级别了(开个打趣)。
4、尽量记住面试过程中你答复不出来或许答复存在不妥的问题
原因:面试失利了没关系,终究每个公司的要求不相同,问的问题和你拿手的方面或许有所出入,但是请记住一点:面试过程中那些你答复不出来问题,或许你自己感觉答复不太精确的问题,自己记下来,假设不会的,你可以当场问问面试官有没有好的答复,假设面试官不乐意告知你(一般是基础方面面试官就懒得答你),那么你就自己回家渐渐查资料,假设是某些特定的技术,也可以自己写写案例什么的,终究知识点就那么多,问题百变,原理不变,面试也是一个学习知识的过程,让你了解大部分公司现在需求或许要求的技术。这次不知道,下次就知道了
5、去面试之前,最好先了解你要去面试公司的情况(包含产品、项目情况)
原因:俗话说,知己知彼,百战不殆,面试就是一场战争,你需求了解你面试公司基本情况,包含岗位要求,这样你就能大约知道你需求面试的这家公司的技术要求情况。为何让你去了解这家公司的主营产品和项目呢,就是让你大约了解这家公司的一个技术架构的情况,包含你或许对他们的一种完结方法提出质疑和疑惑,信赖面试官很乐意帮你答复这些问题的。这样你既图了表现,也学到了知识,何乐而不为。
6、合理安排你的面试时间(假设有多家公司的面试机遇,尽量把你想去的公司放到终究去面试)
原因:估量很多人都不了解这个,或许大部分的人关于怎样安排面试时间比较苍茫,随意安排。但是这儿有个技巧,假设一起有多个面试机遇,你把你最想去的公司放到最结尾去面试,这样你阅历过了前面的这些公司挑选,假设成功了是个机遇,假设没成功,也是为终究做衬托。不过这儿就需求考虑两点:1、你需求记住你投简历的公司和基本情况(这说明你不是海投的)2、假设记不住,那么可以先应答一个时间,后续了解公司信息之后,经过邮件或许其他方法与其约好,调整面试时间。并且建议安排一天的面试公司不要逾越两家,最好的是上午一家,下午一家,这样你能有满足的时间调整情况。java
三、面试题基础总结
1、JVM结构原理、GC作业机制详解
答:具体参照:JVM结构、GC作业机制详解,说到GC,记住两点:1、GC是担任回收所有无任何引用方针的内存空间。留意:垃圾收回收回的是无任何引用的方针占有的内存空间而不是方针本身,2、GC回收机制的两种算法,a、引用计数法b、可达性分析算法(这儿的可达性,我们可以看基础2Java方针的什么周期),至于更具体的GC算法介绍,我们可以参看:JavaGC机制算法
2、Java方针的生命周期
答:创建阶段、应用阶段、不可见阶段、不可达阶段、收集阶段、完结阶段、方针空间重新分配阶段等等,具体参照:Java方针的生命周期
3、Map或许HashMap的存储原理
答:HashMap是由数组+链表的一个结构组成,具体参照:HashMap的完结原理
4、当数据表中A、B字段做了组合索引,那么单独运用A或单独运用B会有索引效果吗?(运用like查询怎样有索引效果)
答:看A、B两字段做组合索引的时分,谁在前面,谁在后边,假设A在前,那么单独运用A会有索引效果,单独运用B则没有,反之亦然。同理,运用like迷糊查询时,假设只是运用前面%,那么有索引效果,假设运用双%号匹配,那么则无索引效果
5、数据库存储日期格局时,怎样考虑时区转换问题?
答:运用TimeStamp,原因参照:Java编程中遇到的时区转换问题
6、JavaObject类中有哪些方法?
答:Object有哪些方法
7、HTTP协议,GET和POST的差异
答:浅谈HTTP中GET和POST的差异
四、线程、规划方式、缓存方面
1、SimpleDataFormat对错线程安全的,怎样更好的运用而防止危险呢
答:关于SimpleDateFormat安全的时间格局化线程安全问题
2、怎样看待规划方式,并简略说说你对观察者方式的了解
答:1、规划方式有神马用2、观察者方式类图及完结
3、集群环境中,session怎样完结同享
答:1、Java集群之session同享2、session多服务器同享方案,还有一种方案就是运用一个固定的服务器专门坚持session,其他服务器同享
4、分布式、集群环境中,缓存怎样改写,怎样坚持同步?
答:A、缓存怎样改写?1、守时改写2、主动改写掩盖,每个缓存框架都有自带的改写机制,或许说缓存失效机制,就拿Redis和Ehcache举例,他们都有自带的过期机制,其他主动改写掩盖时,只需获取对应的key进行数据的掩盖即可
B、缓存怎样坚持同步?这个redis有自带的集群同步机制,即仿制功用,具体参看:基于Redis分布式缓存完结,Ehcache也有分布式缓存同步的配置,只需求配置不同服务器地址即可,参照:Ehcache分布式缓存同步
5、一条sql实行过长的时间,你怎样优化,从哪些方面?
答:1、查看sql是否触及多表的联表或许子查询,假设有,看是否能进行业务拆分,相关字段冗余或许合并成暂时表(业务和算法的优化)
2、触及链表的查询,是否能进行分表查询,单表查询之后的成果进行字段整合
3、假设以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加速查询速度
4、针对数量大的表进行前史表分别(如交易流水表)
5、数据库主从分别,读写分别,下降读写针对同一表一起的压力,至于主从同步,mysql有自带的binlog完结主从同步
6、explain分析sql语句,查看实行方案,分析索引是否用上,分析扫描行数等等
7、查看mysql实行日志,看看是否有其他方面的问题
个人了解:从根本上来说,查询慢是占用mysql内存比较多,那么可以从这方面去酌手考虑
五、规划方案相关
面试还会问到一些关于规划方案相关的问题,比如
1、你的接口服务数据被人截包了,你怎样防止数据恶意提交?
答:咱们可以在接口传输参数里面设置一个业务编号,这个编号用来差异是否重复提交。这样即使数据被抓包了,对方也无法差异每个字段你的含义,这时,这个业务编号的效果就来了
2、假定服务器常常宕机,你从哪些方面去排查问题?

java面试题高级工程师

从两方面评论一名java高级工程师需求学些什么,具备什么才能,感兴趣的小伙伴们可以参阅一下
宏观上:
1.技能广度方面
至少要通晓多门开源技能吧,研究过struts\spring等的源码。
2.项目经历方面
从头到尾跟过几个大项目,头是指需求阶段,包括需求调研。
尾是指上线交付之后,包括保护阶段。
3.架构经历方面
有过分布式系统的架构和开发经历。关于跨系统的结构优化,数据存储的性能指标等有丰富经历。什么缓存啊、数据库的垂直切分什么的,事务的抽象和水平拆分啊,这些应该都轻车熟路吧。
4.职业范畴方面
最起码得通晓一到两门事务吧,所谓通晓,便是比方做金融证券事务的,至少等当半个经融分析师。做电力事务的,至少等当半个电力工程师。
5.个人修为
有自己一些独到的见地,不会随声附和啦。
微观上:
1.你需求通晓面向对象分析与规划(OOA/OOD)、触及形式(GOF,J2EEDP)以及综合形式。你应该非常了解UML,尤其是class,object,interaction以及statediagrams。
2.你需求学习JAVA言语的基础知识以及它的核心类库(collections,serialization,streams,networking,multithreading,reflection,event,handling,NIO,localization,以及其他)。
3.你应该了解JVM,classloaders,classreflect,以及垃圾回收的根本工作机制等。你应该有才能反编译一个类文件而且理解一些根本的汇编指令。
4.假如你即将写客户端程序,你需求学习WEB的小应用程序(applet),必需把握GUI规划的思想和方法,以及桌面程序的SWING,AWT,SWT。你还应该对UI部件的JAVABEAN组件形式有所了解。JAVABEANS也被应用在JSP中以把事务逻辑从表现层中分离出来。
5.你需求学习java数据库技能,如JDBCAPI而且会运用至少一种persistence/ORM构架,例如Hibernate,JDO,CocoBase,TopLink,InsideLiberator(国产JDO红工厂软件)或许iBatis。
6.你还应该了解对象联系的阻抗失配的含义,以及它是怎么影响事务对象的与联系型数据库的交互,和它的运转成果,还需求把握不同的数据库产品运用,比方:oracle,mysql,mssqlserver。
7.你需求学习JAVA的沙盒安全形式(classloaders,bytecodeverification,managers,policyandpermissions,codesigning,digitalsignatures,cryptography,certification,Kerberos,以及其他)还有不同的安全/认证API,例如JAAS(JavaAuthenticationandAuthorizationService),JCE(JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS(JavaGeneralSecurityService)。
8.你需求学习Servlets,JSP,以及JSTL(StandardTagLibraries)和可以挑选的第三方TagLibraries。
9.你需求了解干流的网页结构,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他们下面的触及形式,如MVC/MODEL2。
10.你需求学习怎么运用及管理WEB服务器,例如tomcat,resin,Jrun,而且知道怎么在其基础上扩展和保护WEB程序。
11.你需求学习分布式对象以及长途API,例如RMI和RMI/IIOP。
12.你需求把握各种盛行中间件技能标准和与java结合完成,比方Tuxedo、CROBA,当然也包括javaEE自身。
13.你需求学习最少一种的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。
14.你应该学习怎么使用JAVAAPI和东西来构建WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ(SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging),JAXR(JavaAPIforXMLRegistries),或许JWSDP(JavaWebServicesDeveloperPack)。
15.你需求学习一门轻量级应用程序结构,例如Spring,PicoContainer,Avalon,以及它们的IoC/DI风格(setter,constructor,interfaceinjection)。
16.你需求了解不同的J2EE技能,例如JNDI(JavaNamingandDirectoryInterface),JMS(JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService),JMX(JavaManagementeXtensions),以及JavaMail。
17.你需求学习企业级JavaBeans(EJB)以及它们的不同组件形式:Stateless/StatefulSessionBeans,EntityBeans(包括Bean-ManagedPersistence[BMP]或许Container-ManagedPersistence[CMP]和它的EJB-QL),或许Message-DrivenBeans(MDB)。
18.你需求学习怎么管理与装备一个J2EE应用程序服务器,如WebLogic,JBoss等,而且使用它的附加服务,例如簇类,连接池以及分布式处理援助。你还需求了解怎么在它上面封装和装备应用程序而且可以监控、调整它的性能。
19.你需求了解面向方面的程序规划以及面向属性的程序规划(这两个都被很简单混杂的缩写为AOP),以及他们的干流JAVA规格和执行。例如AspectJ和AspectWerkz。
20.你需求了解对不同有用的API和framework等来为你服务。例如Log4J(logging/tracing),Quartz(scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching),Lucene(full-textsearch),JakartaCommons等等。
21.假如你即将对接或许正和旧的系统或许本地渠道,你需求学习JNI(JavaNativeInterface)andJCA(JavaConnectorArchitecture)。
22.你需求了解JINI技能以及与它相关的分布式系统,比方把握CROBA。
23.你需求JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。
24.你应该娴熟把握一种JAVAIDE例如sunOne,netBeans,IntelliJIDEA或许Eclipse。(有些人更喜爱VI或EMACS来编写文件。随意你用什么了:)
25.JAVA(准确的说是有些装备)是冗长的,它需求许多的人工代码(例如EJB),所以你需求了解代码生成东西,例如XDoclet。
26.你需求了解一种单元测试系统(JNunit),而且学习不同的生成、部署东西(Ant,Maven)。
27.你需求了解一些在JAVA开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。
28.你需求可以深入了解加娴熟操作和装备不同的操作系统,比方GNU/linux,sunsolaris,macOS等,做为跨渠道软件的开发者。
29.你还需求紧跟java开展的脚步,比方现在可以深入的学习javaME,以及各种java新标准,技能的运用,如新起的web富客户端技能。
30.你必需求对opensource有所了解,由于至少java的许多技能直接是靠开源来驱动开展的,如java3D技能。

未经允许不得转载:迅闻网 » java面试题大汇总(java面试题高级工程师)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页