具体而言,可以从如下几个方面有条理地详细叙述一个具体的项目。
-
第一,介绍项目的背景,比如客户是谁,是要干什么的,分哪些模块,大致的工期是多少。这部分大家其实已经写在简历里了,这里就简要叙述下,无需详细,因为面试官不会过多关注这个项目的需求,而是关注你是如何在这个项目用到和本岗位相关的技术的。
-
第二,介绍你做的模块里用到了哪些技术?以及有哪些亮点,这里需要提及的技术和亮点最好要和职位要求相一致。而且,面试官有可能会问你提到的技术的细节,也就是说,你宁可只讲你非常熟悉的技术,而别提你不熟悉的技术。具体地,在介绍完项目背景后,大家可以采用如下的样式来介绍在这个项目里用到的技术。
例如:在这个项目里,我们用到了Spring MVC,具体而言,用到了拦截器和AOP组件,在数据库层面,我们用到Oracle,其中最多的数据表里大概有2千万条数据,所以我在项目里还做了SQL调优的工作。在代码里,我们还用到了诸如ArrayList和HashMap等的集合对象。这个项目对内存有一定的要求,所以我还做了些内存调优的工作。
-
第三,可以介绍下这个项目的开发方式,以及在项目管理方面用到的软件,比如可以这样说:
例如:这个项目我们采用了敏捷开发的方式(点到为止即可,如果面试官感兴趣,会继续提问),在项目管理方面,我们用Maven来管理项目,用Git做版本管理,用Junit来做单元测试,用Jira来做bug管理,在代码上线前,我们还会用Sonar来扫描代码,如果发现一些可改进点,比如Junit覆盖率不高,我们会及时改正。
这些话在简历中都有,但面试官未必能注意这些细节,所以在面试时,大家还是有必要口头说下。而且,这里大家是在介绍项目,所以说出各个关键点即可,没必要偏离这个主题去详细介绍敏捷开发以及各种项目管理软件的细节。
-
我们这里是拿Spring MVC的项目举例,如果大家要介绍其他类型的项目,也可以根据如下两个要点来准备(因为重要,所以这两个要点我们已经重复多次了,所以请大家务必重视)。
-
第一,尽可能多地提到职位描述里给出的技能点,并且在此基础上,适当地介绍些在这个项目里你能拿得出手的而且别人未必有的亮点。
-
第二,在介绍时,点到为止即可,因为此时是在介绍项目,所以如果过于展开的话会喧宾夺主,从而偏离“介绍项目”这个主题,从而会给面试官留下“叙述条理不清晰”的不良印象。
技术亮点
-
Java集合对象
1 能根据项目的需求选用合适的集合对象,比如知道ArrayList和LinkedList的差异,并能合理选用。
2 能在合适的场合选用WeakHashMap。
3 可以适当讲一些集合的JDK底层实现代码。 -
异常处理方面
能在finally从句里写释放资源的代码
-
JDBC方面
1 能通过PreparedStatement的预处理方法来防止SQL注入。
2 能通过批处理来提升操作性能。
3 能通过实例讲述事务隔离级别的含义 -
多线程方面
1 会使用线程池
2 能通过锁或信号量等手段正确地处理多线程并发时的数据一致性。 -
数据库方面
建表时需要根据项目的数据情况,考虑是采用三范式或是反范式。
-
SQL调优
1 可以通过查看日志等方式看哪些SQL需要调优。
2 可以通过执行计划查看SQL的所消耗的代价,并据此调优。
3 可以通过建索引,建分区等手段来优化SQL性能。 -
事务
1 可以说下JDBC或Spring里是如何管理事务的。
2 可以说下Spring里的声明式事务的做法和优点。
3 可以举例说明事务隔离级别和事务传播机制的用法。 -
分布式数据库
1 可以通过水平或竖直等方式的方式来拆分数据库,从而减轻对单表访问所需要的代价。
2 可以通过集群等方式来承担对数据库的过量的访问请求。 -
NoSQL和Hadoop
这两个本身就是个亮点,如果大家用过,可以结合项目来说明。
-
Spring MVC架构
1 可以说下Spring的IOC和AOP是如何优化项目结构的。
2 可以说下拦截器等Spring组件对项目的帮助。
3 ORM,比如Hibernte或Mybatis。使用这种ORM技术时,如何优化访问和操作数据库的性能。 -
Spring和Mybatis等的整合
可以讲下整合框架的细节,并可以举例说明整合后的框架能很好地适应需求的变更。
【原文链接】:https://blog.csdn.net/e8196417ping/article/details/80133600
适合我的
- 接口的输出结果做了一个Result封装(接口规范)
- 对错误的代码做了一个CodeMsg的封装(错误代码规范)
- 全局异常
- mybatis,Mysql调优
- 内存回收