JAVA面试汇总

    1. IOC控制反转的优点?
      将对象的创建权交付于IOC容器进行托管,使得具有如下优点
      • a. 统一管理;
      • b. 以工厂模式对用户提供对象,罗列对象组供用户进行挑选,使得逻辑更清晰;
      • c. 不需要用户直接new对象,可以在获取对象的时候做些额外的操作(getBean()方法进行);
    1. dubbo 提供者和dubbo的消费者是如何进行通信的,dubbo提供者数据变更,消费者如何感知?
      • a. Dubbo启动时,Consumer和Provider都会把自身的URL格式化为字符串,然后注册到zookeeper相应节点下,作为一个临时节点,当连断开时,节点被删除;
      • b. Consumer在启动时,不仅仅会注册自身到 …/consumers/目录下,同时还会订阅…/providers目录,实时获取其上Provider的URL字符串信息。
      • c. Provider和Consumer向Zookeeper注册临时节点,当连接断开时删除相应的注册节点。
      • d. Consumer订阅Providers节点的子节点,实时感知Provider的变化情况,实时同步自身的Invoker对象,保证RPC的可用性。


        image.png
    1. CGLIB和JDK提供的InvocationHandler代理对象生成对应代理情况是在哪个步骤中完成的?
      CGLIB是在代码运行时对字节码进行修改和动态生成,继承子类覆写目标类方法,JDK提供的则需要有接口类作为前提,在运行时动态生成。
  • 4.JWT如何在token上做对WEB服务器无状态处理?
    JWT的token分为三部分:header、payload、signature,signature对header和payload数据进行签名。

  • 5.1 MYSQL的协议格式?

总体流程

===========传输层协议================
1. 三次握手建立 TCP 连接。
===========应用层协议================
2. 建立 MySQL 连接,也就是认证阶段。
    服务端 -> 客户端:发送握手初始化包 (Handshake Initialization Packet)。
    客户端 -> 服务端:发送验证包 (Client Authentication Packet)。
    服务端 -> 客户端:认证结果消息。
 
3. 认证通过之后,客户端开始与服务端之间交互,也就是命令执行阶段。
    客户端 -> 服务端:发送命令包 (Command Packet)。
    服务端 -> 客户端:发送回应包 (OK Packet, or Error Packet, or Result Set Packet)。
 
4. 断开 MySQL 连接。
    客户端 -> 服务器:发送退出命令包。
 ==========传输层协议==================
5. 四次握手断开 TCP 连接

服务端发送至客户端的协议格式:

image.png

协议版本号:服务端所使用的mysql协议的版本号
服务器线程ID:服务端为此客户端所创建的线程的ID
挑战随机数:MySQL数据库用户认证采用的是挑战/应答的方式,服务器生成该挑战数并发送给客户端,由客户端进行处理并返回相应结果,然后服务器检查是否与预期的结果相同,从而完成用户认证的过程。
服务器权能标志:用于与客户端协商通讯方式

客户端发送至服务器端:

image.png

客户端权能标志:客户端收到服务器发来的初始化报文后,会对服务器发送的权能标志进行修改,保留自身所支持的功能,然后将权能标返回给服务器,从而保证服务器与客户端通讯的兼容性。
消息长度:客户端发送请求时所支持的最大消息长度值
字符编码表示通讯过程中使用的字符编码,与服务器在认证报文中发送的相同
用户名:客户端登陆的用户名
挑战认证数据:客户端用户密码使用服务器发送的挑战随机数进行加密后,生成挑战认证数据,返回给服务器用于服务端的认证

认证流程:

服务器发送随机字符串 (scramble) 给客户端。
客户端作如下计算,然后客户端将 token 发送给服务端。

stage1_hash = SHA1(明文密码)

token = SHA1(scramble + SHA1(stage1_hash)) XOR stage1_hash

服务端作如下计算,比对 SHA1(stage1_hash) 和 mysql.user.password 是否相同。

stage1_hash = token XOR SHA1(scramble + mysql.user.password)
  • 5.2 MYSQL的innodb引擎重要的几个参数优化?
    内存优化参数:

    • innodb_buffer_pool_size:主要缓存innodb表的索引,数据,插入数据时的缓冲,建议设置成内存的60%~70%。
    • innodb_additional_mem_pool_size:存放Innodb的内部目录,这个值不用分配太大,系统可以自动调。通常设置16M够用了,如果表比较多,可以适当的增大。
      日志优化参数
    • innodb_log_file_size:这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系。一般取256M可以兼顾性能和recovery的速度。
    • innodb_log_buffer_size:事务在内存中的缓冲,也就是日志缓冲区的大小, 默认设置即可,具有大量事务的可以考虑设置为16M
    • innodb_flush_logs_at_trx_commit:这个参数只有3个值(0:每秒写入,1每次提交写入,2事务提交会触发log buffer 到log file的刷新,但并不会触发磁盘文件系统到磁盘的同步。此外,每秒会有一次文件系统到磁盘同步操作).默认为1,性能更高的可以设置为0或是2,这样可以适当的减少磁盘IO(但会丢失一秒钟的事务。),游戏库的MySQL建议设置为0。主库请不要更改了。
      IO分配
    • innodb_file_per_table:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。默认是关闭的,建议打开(innodb_file_per_table=1)
    • innodb_open_files:限制Innodb能打开的表的数据。
    • innodb_data_home_dir:放置表空间数据的目录,默认在mysql的数据目录,设置到和MySQL安装文件不同的分区可以提高性能。
  • 6.zookeeper如何保证数据一致性?
    Paxos算法(参考后续文章《Paxos算法》)比较复杂,为了简化实现,Zookeeper使用了一种叫ZAB(ZooKeeper Atomic
    Broadcast,ZooKeeper原子消息广播协议)的算法协议。基于ZAB算法,Zookeeper集群保证数据更新的一致性,并且通过集群方式保证了Zookeeper系统高可用。但是Zookeeper系统中所有服务器都存储相同的数据,也就是数据没有分片存储,因此不满足分区耐受性。
    因为Zookeeper系统的多台服务器存储相同的数据并且每次数据更新都要所有服务器投票表决, 所以和一般的分布式系统相反,Zookeeper集群的性能会随着服务器数量的增加而下降。

  • 7.kafka如何保证数据一致性及重试不出现数据重复机制、kafka的partition的几种优点?
    参考后续文章《kafka基础原理》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352