JAVA高级工程师面试宝典——项目优化相关(五)

五、项目优化相关

1.日常项目中,如果你接手,你准备从哪些方面调优?

答:这个呢首先是了解哪些需要优化,需要优化肯定是项目性能遭遇瓶颈或者猜测即将遭遇了,我们才会去考虑优化。那么怎么优化?

a、扩容 ,扩容的理解,就是扩充服务器并行处理的能力,简单来说就是加服务器,增加处理请求的能力,例如增加nginx 、tomcat等应用服务器的个数,或者物理服务器的个数,还有加大服务器带宽等等,这里考虑的是硬件方面

b、调优 ,调优,包括系统调优和代码调优 。 系统调优就是说加快处理速度,比如我们所提到的CDN、ehcache、redis等缓存技术,消息队列等等,加快服务间的响应速度,增加系统吞吐量,避免并发,至于代码调优,这些就需要多积累了,比如重构、工厂等, 数据库调优的话这个我不是很懂,只知道索引和存储过程,具体参考:Mysql数据库调优21个最佳实践  ,其他数据库调优方面就各位自己找找吧

 

 

2.谈谈你对分布式的理解

答:个人理解:分布式就是把一个系统/业务 拆分成多个子系统/子业务 去协同处理,这个过程就叫分布式

 

 

3.web如何项目优化

答:①、浏览器端

压缩源码和图片2、选择合适的图片格式3、合并静态资源4、开启服务器端的Gzip压缩5、使用CDN6、延长静态资源缓存时间7、把CSS放在页面头部,把JavaScript放在页面底部

②、服务器端优化

 

 

4.单例模式有几种? 如何优化?

答:5种第一种懒汉比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢

种饿汉在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快种(静态内部类)种(枚举)种(双重校验锁)这个是第二种方式的升级版

一般的情况下,我会使用第三种方式,这种方式基于classloder机制避免了多线程的同步问题

 

 

5.简单说说线程池的原理和实现

答:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。

 

 

------------------------------------------------------------------------------

上一篇:JAVA高级工程师面试宝典——负载均衡、集群相关(四)

下一篇:JAVA高级工程师面试宝典——并发和安全方面(六)

------------------------------------------------------------------------------
 

你可能感兴趣的:(高级JAVA工程师面试宝典)