查漏补缺3月
SPI扩展序列化方式
分布式ID的相关问题
TCP的流量控制,避免浪费网络资源的滑动平均法也可以用在其他可能会出现资源浪费的情况等
讲一讲对自己这个 RPC 项目的想法,你是怎么设计这个项目的,想要实现那些功能?
你认为一个好的 RPC 框架最重要的特性有哪些?或者说什么是一个好的 RPC 框架?
就稳定性而言,如果在一个不稳定的网络情况下,连接经常出现闪断,那你这个 RPC 框架会怎么做?
那发生了闪断,你这次的请求会视作失败的还是成功的?
那这里会出现问题,因为网络是不可靠的,有可能服务端已经处理过这次请求了,只是客户端没有收到回复而已,如果服务端不是幂等的,就会出现业务的错误
如果你看过一些 RPC 的实现就会知道一般对于这种问题都会使用请求 ID 来解决,拿着这个请求 ID 服务端就可以进行一些追溯之类的操作,不能完全依靠方法名称和请求参数,因为这些是可以重复的
请求 ID 是怎么生成的?
是存在内存里的还是数据库里的?你在内存里怎么保证不重复呢,服务一重启不是马上又从 1 开始了?还有如果你的 RPC 框架在集群里,那你怎么保证每个服务器的 id 不一样呢?
Java
Java 学习有多久了
简历里面为什么要单独列出来了解集合框架、JVM 和并发体系,你是怎么理解的
HashMap 里的 key 可以为 null 吗,value 可以为 null 吗?
那如果 get(null) == null 的话,可以判断是没有这个键值对还是 key,value 同时为 null 吗
如果确切地知道 key 用什么方法?
TreeMap 了解吗?有什么特性
什么时候需要用到 TreeMap
ConcurrentHashMap 的 key 可以为 null 吗?value 可以为 null 吗?
你在写代码的时候对 ConcurrentHashMap 进行 try-catch 吗?
那为什么 value 不能为 null 而 HashMap 可以?
并发
你的项目里肯定涉及到了并发,在你处理并发的时候都用到了什么工具,什么类?
Java 7 里提供了 fork join,是为了解决什么问题?
那用锁、信号量不行吗?
CountdownLatch 用过吗?
场景
有一个 8G 大的文本文件,存的字符串,你只有 2G的内存,找出重复的字符串以及出现的次数
需要你生成一个在时间和空间维度全局唯一的 ID,你怎么生成?
机器重启之后就要重新申请,那怎么保证请求的 id 不被浪费呢?
编程
模拟计算器,包含 “加减乘除” 和 “括号” 的操作,处理一个字符串,求这个字符串对应的结果
实现基本功能
用面向对象的思想设计程序
能够识别字符串是否有效
能够处理大数乘法