面试题整理
Posted canmeng-cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题整理相关的知识,希望对你有一定的参考价值。
1、mysql如何实现主从?
使用binlog主从复制。
从库生成两个线程,一个I/O线程和一个sql线程。I/O线程区请求主库的binlog,并将得到的binlog写入到relay log(中继日志)文件中;主库会生成一个log dump线程,来给从库I/O线程传binlog;sql线程会读取relay log内容,并解析成具体的操作写入到数据库
2、主从延迟如何解决?
1)忽略。在业务允许的情况下,忽略主从的延迟。如淘宝搜索、qq消息等
2)强制读主。采用一个高可用的主库,使读写都落在主库上,采用缓存来提升系统的读性能。主库down机从库顶上。
3)选择性读主。
a 对于实时性要求很高的数据,从主库读取;实时性不高的数据从从库读。
b 根据主从延迟的时间,利用缓存,选择一段时间内的数据,从主库读,这段时间之外的数据,从从库读
3、数据库分组架构究竟解决什么问题?
注解解决的读性能瓶颈
大部分互联网业务都是读多写少的业务,数据库的读往往最先称为性能瓶颈,如果希望:
1)线性的提升读性能
2)通过消除读写锁冲突提升数据库的写性能
可以考虑使用分组架构
4、水平切分解决什么问题?
水平切分主要解决数据库数据量大的问题
大部分互联网业务数据量很大,单裤容量容易成为性能瓶颈,如果希望:
1)线性降低单库容量
2)线性提高数据库写性能
可以考虑使用水平切分
5、Java中对象的序列化和反序列化
序列化:把对象转化为字节序列的过程
反序列化:将字节对象转化为对象的过程
作用:
* 方便信息在网络中传输
* 对象持久化
* 如果不希望对象的某个属性被序列化,可将之声明为static类型或者transient类型
序列化手段:
1、Java中常见的序列化手段是实现Serializable接口,通过ObjectOutputStream来将对象序列化到磁盘,然后通过ObjectInputStream将对象从磁盘中反序列化成对象。
2、json序列化,使用jackson包,通过ObjectMapper类来实现序列化和反序列化
3、FastJson序列化
4、Google的ProtoBuff序列化
5、 Facebook的thrift
Java序列化的缺点:
* 无法跨语言。Java序列化技术是Java语言内部私有化协议,其他语言并不支持
* 序列化后的码流太大,不适合网络传输
* 性能低下。Java jdk自身的序列化方式和二进制编码相比,性能低下
业界主流的编解码框架:
1)Google的ProtoBuff
由Google开源而来,在Google内部久经考验。其特点如下:
* 结构化数据存储格式(xml,json)
* 高效的编解码性能
* 语言无关平台无关、扩展性好
* 官方支持Java、c++、Python三种语言
6、dubbo如何实现软负载
7、web线程安全
HttpServlet本身是无状态的,是线程安全的。但是用户对servlet的实现无法保证线程安全性,用户定义的Controller无法保证线程的安全性
8、JDK动态代理实现原理
9、负载均衡
10、HashMap中long类型时如何存储的?
11、HashMap高并发下面会产生什么问题?
以上是关于面试题整理的主要内容,如果未能解决你的问题,请参考以下文章