针对importNew 网站中的《面试总结》一文中涉及到的问题,自己的一点总结(2)

Spring相关

关于Spring的问题主要就是围绕着Ioc和AOP,它们真是Spring的核心啊。

Spring Bean的生命周期(重要程度:★★★★★)

推荐文章:【Spring】Bean的生命周期  

                   Spring Bean的完整生命周期(非常详细)


Spring中用到的设计模式(重要程度:★★★★★)

工厂模式:IOC容器

参考文章 :

调侃IOC的前世今生

Spring的IOC原理,

跟我学Spring3(2.2):IoC容器基本原理

跟我学Spring3(2.3):IoC容器基本原理

代理模式:AOP

参考文章:AOP那点事

策略模式:在spring采取动态代理时,根据代理的类有无实现接口有JDK和CGLIB两种代理方式,就是采用策略模式实现的
单例模式:默认情况下spring中的bean只存在一个实例

讲一讲Spring IoC和AOP(重要程度:★★★★★)

IoC的核心是依赖反转,将创建对象和对象之间的依赖管理交给IoC容器来做,完成对象之间的解耦。
AOP主要是利用代理模式,把许多接口都要用的又和接口本身主要的业务逻辑无关的部分抽出来,写成一个切面,单独维护,比如权限验证。这样可以使接口符合“单一职责原则”,只关注主要的业务逻辑,也提高了代码的重用性。


AOP的应用场景(重要程度:★★★★☆)

权限,日志,处理异常,事务等等,个人理解就是把许多接口都要用的又和接口本身主要的业务逻辑无关的部分抽出来,写成一个切面,单独维护,比如权限验证。这样可以使接口符合“单一职责原则”,只关注主要的业务逻辑,也提高了代码的重用性。

Spring中编码统一要如何做(重要程度:★★★☆☆)

<filter>  
       <filter-name>CharacterEncodingFilter</filter-name>  
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
       <init-param>  
           <param-name>encoding</param-name>  
           <param-value>UTF-8</param-value>  
       </init-param>  
       <init-param>  
           <param-name>forceEncoding</param-name>  
           <param-value>true</param-value>  
       </init-param>  
   </filter>  
   <filter-mapping>  
       <filter-name>CharacterEncodingFilter</filter-name>  
       <url-pattern>/*</url-pattern>  
   </filter-mapping>

Mysql索引的内部结构(重要程度:★★★★☆)

B+树,三层,真实的数据存储在叶子节点

参考链接:http://www.cnblogs.com/tgycoder/p/5410057.html

参考资料:
MySQL索引原理及慢查询优化

如果一个SQL执行时间比较长怎么办(重要程度:★★★★☆)

可以利用pt-query-digest等工具分析慢查询日志,也可以用explain查看SQL的执行计划。具体可看我的另一篇博客MySQL调优

如果一张表中有上千万条数据应该怎么做分页(重要程度:★★★☆☆)

肯定不能直接limit,offset,主要就是要想办法避免在数据量大时扫描过多的记录。具体可看我的另一篇博客【译】优化MySQL中的分页

什么样的列适合加索引,如果一个列的值只有1和2,那么它适合加索引么(重要程度:★★★☆☆)

  • 在where从句,group by从句,order by从句,on从句中出现的列
  • 索引的字段越小越好
  • 在建立联合索引时,离散度大的列放大联合索引的前面

只有1和2不适合建索引


文章中剩余的  redis 、ElasticSearch算法部分,我将在我以后的博客中,做单独的总结


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章