java面试题总结

2019-07-10  本文已影响0人  落云和枫

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. 你有过数据库性能调优经验,那么数据库的耗费都耗费在了哪里

数据库调优

上一篇下一篇

猜你喜欢

热点阅读