出去面试了两天,总体来看,面试内容并不难,全是之前接触过的,并且经常用的,面试内容也是基于个人简历展开的,但是从回答效果来看较差,其中原因我自己总结了以下几条:
学习不够扎实和系统,缺乏问为什么?
一般面试除了问一些应用方面的知识,会附带着问一些原理等方面的东西,比如Servlet的生命周期或Ajax的原理,这两个东西我们平时经常用,但从面试来看,大多数开发人员,都知道如何应用,但对于原理只能说那么一两句,不能很系统清晰的表述出来。
还有一点就是在学习或应用一个东西的时候,我们总是很习惯的就接受了,没有问自己为什么要学习这个东西?这个技术为什么会出现在这个项目中?它的优势在哪里?项目做完了,亮点或竞争力在哪里?(可以从技术、业务和展现多个角度找自己擅长的来说)
总结需全方位
每周一篇博客是技术沉淀的必需品,但从我自身出发,总结的内容还不够全方位,或者说不够全面,在学习了一项新技术,我总是想从它的应用层面来讲,一般通过做一个完整的例子来阐述对新技术的理解,但这样就导致了出现用完了就忘了,即使做了总结。还以Ajax异步请求做例子,当看完视频,理解了每一行代码,并且知道了大体原理,之后总结中我花大量的笔墨叙述怎么使用,而不是分析它的原理是什么,发展的来及优势。我现在觉得这种总结就是在买椟还珠,总结和没有总结是没有区别的,只能记住一时,记不住一世。
还有比较重要的一点就是知识之间的关联性,ajax根本不是什么新技术,其实就是js和xml的结合体,知识连成片之后对学习记忆都有好处。
没有自己擅长和精通的地方,缺乏正规开发的经历
简历中一般都是需要填写自己精通的方面,太少显得水平不够,信心不足,太多就有吹牛的嫌疑了;精通可能对每个人的定义不同,但至少要在面试中,能清晰完整的描述出技术要点以及原理等,最起码说出自己擅长的技术时是神采奕奕的。能让面试官看到亮点,留下一个好的印象,为以后工作分配打下基础。
第二天的面试,问到了个人在项目中参与的角色,以及项目组人员架构,开发流程等一些东西,由于以前在本公司一般是小组长带头,大家一起合作开发,因此结合自身情况说了一些,但是感觉这方面还是有些欠缺。
学习不能只求广,要求精求专
这次面试也暴露出项目做得少的问题,虽然参与过教务、李宁以及目前最正规的DRP,但这些都属于半摸索式的开发,从需求分析到成型,这种开发的方式缺少一种高层次的指导,开发进度也很难精确制导,最后由于这些项目没有二期、三期的开发和维护,草草中结束了项目,面试中自然而然会产生心虚的情况,即使对的,也吞吞吐吐。因此出去干了半年,不止是对技术的打造,更是对自信心的一种极大提升。
其实面试中,问到的很多技术都是一层窗户纸,没捅破之前语无伦次,感觉很难说清楚,但是面试结束后通过查询了解,感觉非常的简单。到目前阶段,我们的学习不止涉猎要广,更要步步为营,针对性把一层层窗户纸捅破,扎下去学习,做到精而专。
这次面试收获很大,知道了自己哪方面比较欠缺,学习方式以及思维方式还存在什么问题。
下面是这两次面试中被问到的问题,做了一个简单的分类:
基础(前台、后端、数据库)
1. Ajax原理?核心对象及方法?框架产品?
2. Jquery一些基本的用法?
3. 用js时怎么解决IE兼容的问题?
4. 数据传输中安全问题?
5. 如何多线程编程?
6. java读取xml几种方法?
7. IO是用了哪个设计模式?一些基本操作。
8. Servlet执行的生命周期?
9. SSH各自的原理?
10.Hibernate和JDBC的关系?Hibernate用法?如何调优?有几种用法?
11.Oracle和MySql的区别?分页SQL语句怎么写?
12.数据分区。
架构设计
1. 对架构的理解?
2. SSH的应用
项目经验
1. WebService性能差,调优解决方案?
2. 如何应付大数据量?
3. 项目中用的到工作流?概述。
4.在项目中充当什么角色?人员架构?大致开发流程?
5.为什么在项目中用到一种技术?比如教务中为什么要用EJB?
6.项目的亮点或竞争力在哪里?
7.还问了一些他们不知道,但我们在简历中提到的东西,比如filenet。