一进面试公司,前台没有让我填任何资料,也没做任何的笔试题,直接把我带到接待室。面试官进来带了一台笔记本坐在我对面,首先让我自我介绍,在这一环节上之前没什么准备,就简单介绍了一些自己的工作经历,没几句话就讲完了。看着面试官的表情,就知道不是太满意。随后问了我比较熟悉那些框架以及数据库,根据我的回答,他就问了一些ssh框架,mysql的问题。他问的问题基本上都很原理性的东西,但我有回答模糊模糊,有的就回答不上来。有些知识的原理是学过,但这么久了,那能记住那么多。2天前做的面试题,一个都没碰上,运气有点背。结果肯定是不合格,匆匆的就结束了面试,临走之前送了建议:“多看点书!”这真的让我很受打击,也感觉非常羞亏。回去之后,我在网上找答案,不停的做面试题目,一直到凌晨2点才上床睡觉,但躺床上也睡不着觉,满脑子都是面试题。下面就是面试到的题目以及答案:
自我介绍模板:
我叫某某,某某学校毕业,学的是某某专业,是一个性格比较什么什么样的人。从事java开发有多少年的经验,做过什么项目,在项目主要用到的是什么框架什么数据库,负责过什么模块的开发。现在做想什么(想做什么,代表着你的职业理想。在这个部分,你应该介绍自己对应聘职位、行业的看法和理想,包括你的职业生涯规划、对工作的兴趣与热情、未来的工作蓝图、对行业发展趋势的看法等。)
1:mysql有那些储存引擎,分别介绍一些它们
MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。
MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。
MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。
MERGE存储引擎是一组MyISAM表的级合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行.
2:两个字段经常用来做搜索,怎么优化查询性能
两个字段相加做别名,并新建索引。
3:如果是千万条分布记录查询,怎样优化查询性能
建一个分页查询表,不使用limit语句,避免全表搜索
4:hibernagte三种状态
临时状态(数据库中没有相应记录,也没有存到seesion中),持久状态(session跟数据库都有存储记录),游离状态(数据库中有相应的记录,但没有存储到session中)
5:hibernate一级缓存跟二级缓存区别
Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是事务范围的缓存。这一级别的缓存由hibernate管理的,一般情
况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态动态加载和卸载,属于多事务级别,要防止事务并发性。
Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的QueryCache。
6:什么样的数据适合存放到第二级缓存中?
1.很少被修改的数据
2.不是很重要的数据,允许出现偶尔并发的数据
3.不会被并发访问的数据
7:常用的缓存插件Hibernater的二级缓存是一个插件,下面是几种常用的缓存插件:
EhCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,对Hibernate的查询缓存提供了支持。
OSCache:可作为进程范围的缓存,存放数据的物理介质可以是内存或硬盘,提供了丰富的缓存数据过期策略,对Hibernate的查询缓存提供了支持。
SwarmCache:可作为群集范围内的缓存,但不支持Hibernate的查询缓存。
JBossCache:可作为群集范围内的缓存,支持事务型并发访问策略,对Hibernate的查询缓存提供了支持
8:配置二级缓存的主要步骤
1选择需要使用二级缓存的持久化类,设置它的命名缓存的并发访问策略。这是最值得认真考虑的步骤。
2选择合适的缓存插件,然后编辑该插件的配置文件。
9:springMVC概念
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.
10:事务概念
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
11:Spring嵌套事务
事务嵌套就是两个事务 一个外部事务,一个子事务,也可以这样外部事务调用子事务,核心是要配置savepoint