面试题整理

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高并发下面会产生什么问题?

以上是关于面试题整理的主要内容,如果未能解决你的问题,请参考以下文章

前端面试题及答案整理(转)

PHP&Java&Py&漏洞利用or运维面试题整理

面试题整理(持续修改)

面试必备 | 常见C++笔试面试题整理

一名深漂程序员:我所整理和收集的前端面试题(笔记)

一名深漂程序员:我所整理和收集的前端面试题(笔记)