`
Josh_Persistence
  • 浏览: 1632188 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Interview Points

阅读更多

1、性能调优

2、IO 导致性能问题

3、集群:缓存集群,数据库,Nosql,大数据处理集群

4、性能最高最安全的单例模式。

6、架构经验,架构独到之处及对性能的提升

7、ZK的缺点,怎么解决?

8、小型网站或应用的缓存实现,画图,大型分布式网站的缓存实现,画图。基于大型分布式网站的缓存实现,怎么得出分布式session系统架构。

9、一致性哈希算法的原理和实现

10、集群管理中的领导者选举算法: Paxos算法与谦让算法。

11、悲观锁 乐观锁

12、如何实现一个生产者消费者模式

 

13、用代理模式实现延迟加载的一个经典应用就在Hibernate框架中。当Hibernate加载实体Bean时,并不会一次性将数据库所有的数据都加载。默认情况下,他会采取延迟加载的机制,以提高系统的性能。Hiberate中的延迟加载主要有两种:一是属性的加载,二是关联表的加载。

 

14、NIO中的核心对象Buffer,Channel,Buffer的几个属性,主要方案,分片,只读缓冲区、复制缓冲区等,NIO还提供了文件映射到内存的方法,DirectBuffer的性能和运行参数设置以及缺点(创建和销毁浪费性能)

Java中的两种IO的涉及:BIO,NIO:IO的多路复用技术。 

 

15、Java中的四种引用,如果需要一张很大的Map表作为缓存使用,weakHashMap的选择,weakhashmap使用弱引用,可以自动释放已经被回收的key所在的表项。但如果weakhashmap的key都在系统内持有强引用,那么weakhashmap就退化为普通的hashmap,因为所有的表项都无法被自动清理。

 

16、并行程序开发及优化

1)常用的多线程设计模式:Futuer模式、Master-Worker模式、Guarded Suspeionsion模式、不变模式和生产者消费者模式

2)JDK内置的多线程框架和各种线程池

3)JDK内置的并发数据结构

4)Java并发控制的方式:内部锁、重入锁、读写锁、ThreadLocal变量、信号量等

5)有关“锁”的一些优化方法

6)使用无锁的方式提升高并发程序的性能

7)使用轻量级的协程获得更高的并行度。

8)自我实现一个线程池

9)自我实现一个阻塞队列

 

17、Java8的新特性

18、Java源生实现一个RPC框架:需要哪些类?

19、应用架构的演进,各个时代的问题和主要要解决的问题

20、作为一个架构师,如果你来设计支付宝的架构,你觉得它会怎样发展?

21、并行服务调用的3种方式。

22、如果有过支付的经验,可以从账务数据库和交易数据库数据容量性能瓶颈发生后,怎么做?数据垂直拆分后,最大的问题是啥?数据一致性怎么通过二阶段去保证,二阶段保证有哪些强制的要求。消息型的二阶段提交的场景,不是实时一致性,而是最终的一致性。反到大促。。。

23、怎样形成无限扩容的数据库方式。

 

24、ConcurrentHashMap是怎么实现线程安全的

1.7是用了很多段,段不同是可以并发。1.8 key不存在用CAS操作,存在用synchronized加锁。

 

25、Java BIO,NIO,AIO的区别

BIO阻塞IO;NIO非阻塞IO;AIO异步IO,线程模型都有哪些?

 

26、Java线程间通信的方式有哪些

volatile,wait/notify机制 追问:volatile用处 保证内存可见性,线程有变量有本地的副本 追问:如何实现一个生产者消费者模型 回答正确。之前写过,说了一个使用场景。之前云端使用消息队列,餐厅端需要尽量轻便,需要用一个队列。

 

27、Java的垃圾回收机制

 

 

X、JVM内存调优:

1)Java虚拟机的内存模型:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区

2)JVM内存分配参数:设置最大堆内存、最小堆内存、新生代、持久代、线程栈、堆比例分配

3)垃圾收集器的类型

4)Tomcat的调优案例:加快Tomcat的启动

 

X1、Java性能调优工具

1)Linux命令行工具

2)Windows命令行工具

3)JDK命令行工具:jps,jstat,jinfo,jmap,jhat,jstack,jstatd,hprof

4)JConsole

5)VisualVM

6)OQL

7)MAT

8)JProfile 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics