一、自我介绍
我叫XXX,今年23岁,毕业于XXX大学计算机科学与技术专业,拥有扎实的Core Java基础,良好的编程风格;熟悉JSP+Servlet+JavaBean模式的WEB开发;熟悉Struts,Hibernate,Spring等开源框架,了解EJB; 熟悉Tomcat,Jboss服务器等,熟悉基于Linux及Unix环境下的软件开发。
在校期间有多次社会实践经历,曾参与过学院网上虚拟实验室开发的需求分析,大学期间多次担任多课程的课代表。虽然实际工作经验不是很足,但大学四年培养了我充分的自信心和敬业精神以及扎实的学科基础知识和较强的专业技能,四年校园生活中,我严格要求自己,自觉、遵纪、守时。本人坦诚且有责任心,有独立进取的品性,勤于动手、善于动脑,适应新环境能力很强。能在最短时间内完成从学生到职业工作人员的转型,尽自己最大的努力融入新的工作生活。
二、技巧
1.源码级解决问题
产生一个问题?百度、谷歌、问老师。
面试官问: 请讲讲ArrayList如何扩容的?
我最初看书(看博客、文档),上面它的底层是动态数组,会在add()时 如果发现已满,则自动扩容1.5 。我还查阅了源码进行了验证,发现是在数组已满扩容,并且是通过 位移运算符扩容。
int newCapacity = oldCapacity + (oldCapacity >> 1);
2.找对时机,秀技能
每个人都有一些 独到的经验,要想办法在面试的时候 讲给面试官。
“聊聊自己的项目经验” ,讲项目,讲完的时候 加一句:我在做这个项目的时候 曾经遇到了一个bug,当时ArrayList.asList()返回一个List,当时通过阅读源码 发现 返回的LIst不是 Collection中的那个List。
3.比较通过的 秀点
优化类(JVM、SQL优化)
1.jvm优化:项目做完时,我用jmeter进行了压力测试,结果发现相应时间太慢(或者内存利用率太高) ,然后我用jvisualvm分析了下JVM的内存情况。分析后,进一步发现项目中的小对象太多了,并且发现这些小对象都是生命周期比较短的对象。然后我猜测可能就是由于短对象太多,造成了堆中新生代容量不足,进而让很多短对象逃逸到了老年代中。这样一来,新生代和老年代中的对象都会很多,就会加速GC的回收频率,从而降低系统的性能。对此,我调大了新生代的内存大小,并且调高了新生代 逃逸到老年代的 阈值。之后再测试,发现性能平稳了许多。
PS:以上短短200字,就告诉了面试官你有性能测试的良好习惯、会发现问题、分析问题,并且会JVM调优!
2.项目做完时,我用jmeter进行了压力测试,结果发现响应时间太慢。然后我用mysqldumslow工具查找到了项目中执行时间最长的那个SQL语句,因此猜测是这条SQL的性能太低,拖累了整个系统。然后我用explain查看了SQL执行计划,发现这个SQL根本没有写索引并且是大表驱动了小表,所以特别慢。之后,我给它后面的where查询字段加上了索引,并且改为了小表驱动大表。然后再次测试,响应时间就缩短了很多。
PS:这个秀点是“SQL优化”,具体流程是:定位慢SQL->使用explain查询SQL执行计划,用于分析SQL执行慢的原因->SQL优化。上述中的“小表驱动大表”等是SQL优化时的术语。
算法类的:字符串算法 (KMP算法)
4.技术沉淀
数据支撑: github、博客、专栏、微信公众号、项目发布到阿里云
三、经历
02/26am
填写信息后手机扫码做题,关于Java的题目比较基础,但很少。测试最后让谈谈个人职业生涯规划和针对领导下达的没有接触过的任务该怎么做。
面试官很和善,先做了自我介绍,然后问了简历上面的项目,以验证真实性,包括参与数据库表有多少表,以及建立完表后是如何提交的,个人负责的是那些模块,以及主要做了哪些工作。询问是否熟悉Linux和常用命令,以及是否搭建过服务器。然后问前端框架是否熟悉,Ajax是什么?之后又询问是否参与过spring boot项目,理想薪资和如何看待加班,最后问我有没有想问的。
02/26pm
先自我介绍,用自己的话谈谈你对spring的理解,说说IOC容器。询问的之前项目的具体工作以及工作中遇到的问题,回答的不好。然后询问对前端框架的熟练度。…
转载:https://blog.csdn.net/ipangci/article/details/114239364