java面试题总结
1. Spring 框架都配置了哪些内容?
<!-- 注解扫描 -->
<context:component-scan base-package="com.chen.service.impl"></context:component-scan>
<!-- 加载属性文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- SqlSessionFactory -->
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="typeAliasesPackage" value="com.chen.pojo"></property>
</bean>
<!-- 扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.chen.mapper"></property>
<property name="sqlSessionFactoryBeanName" value="factory"></property>
</bean>
<!-- 事务管理器 -->
<bean id="txManage" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 声明式事务 -->
<tx:advice id="txAdvice" transaction-manager="txManage">
<tx:attributes>
<tx:method name="ins*"/>
<tx:method name="del*"/>
<tx:method name="upd*"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置aop -->
<aop:config>
<aop:pointcut expression="execution(* com.chen.service.impl.*.*(..))" id="mypoint"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="mypoint"/>
</aop:config>
</beans>
Spring的优点
方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程
方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序
方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts2、Hibernate、MyBatis、Quartz等)的直接支持
降低JavaEE API的使用难度
Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
2.Spring Bean 的配置内容有哪些?
1. 基于XML的配置
通过<bean> </bean>来定义Bean,通过id或name属性定义Bean的名称,如果未指定id和name属性,Spring则自动将全限定类名作为Bean的名称。通过<property>子元素或者p命名空间的动态属性为Bean注入值。
2. 基于注解的配置
在Bean实现类中通过一些Annotation(标注)来标注Bean类:
@Component:标注一个普通的Spring Bean类(可以指定Bean名称,未指定时默认为小写字母开头的类名)
@Controller:标注一个控制器类
@Service:标注一个业务逻辑类
@Repository:标注一个DAO类
3.基于java
在标注了@Configuration的java类中,通过在类方法标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑。
3.MySql 数据库有什么特点?
1、可以处理拥有上千万条记录的大型数据;
2、支持常见的SQL语句规范;
3、可移植行高,安装简单小巧;
4、良好的运行效率,有丰富信息的网络支持;
5、调试、管理,优化简单(相对其他大型数据库)。
4. MySql联合索引遵循的是什么原则?
1、需要加索引的字段,要在where条件中
2、数据量少的字段不需要加索引
3、如果where条件中是OR关系,加索引不起作用
4、符合最左原则
举例:
联合索引(a、b、c) 使用a或者a或者a、b或a、b、c这3种可以进行查找,不支持b、c进行查找
5. 我看你精通Tomcat等中间件,那你说下我Tomcat 如何做调优?
第一个方法:就是从外部系统稳定性方面,他现在时使用的Xp,但是我还是建议要是做服务器的话,还是使用服务器版本的操作系统,稳定性更好,要是系统不稳定造成的服务器重启或者中断,结果是可想而知的。
第二个方法:就是加大JVM的虚拟内存,大家应该都知道Tomcat是依附于JVM的,默认JVM的内存只有128mb,这对于小系统或者是自己练习使用完全够用了,但是要是大的项目就够了,这个可以根据自己项目自己选择,这里因为公司项目很大,我还是建议他增大到256MB了。
第三个方法:就是配置Tomca服务器的连接设置,
对于默认连接数,Tomcat是提供了10个连接数
对于最大连接数:Tomcat默认是75个连接数
对于允许最大连接数:Tomcat默认为100个连接数
这对于大系统是远远不够的,一般要是增大连接数,建议把最大连接数,允许最大连接数这两项同时增大,
且允许最大连接数比最大连接数要大,一般大1就可以了
6. Spring Service 层有很多业务代码,可能是100 多行或更多,可读性非常差,读完它可能需要个把小时,那么怎么去做让他的可能性提升呢?
7. 你有过数据库性能调优经验,那么数据库的耗费都耗费在了哪里