文章最后有面试题福利! 记得看一下哦~
前言
写这篇文章的目的是因为前两天同学想应聘 Java 工程师, 从网上找了 Java 面试题和答案让我帮忙看看. 我扫了一眼, 倒吸了一口冷气, 仔细一看, 气的发抖. 整篇题目 30 多个没有一个答案是对的, 所以在这里总结一下这几年面试别人和被别人面试遇到的一些我认为比较好的基础题目分享给大家, 进阶题目在后续补充. 我的理解如果有错漏请一定指出, 非常感谢!
Java 面试知识点
技术广度
对 MQ, 缓存, NoSQL, 大数据, 高并发, 高可用, 微服务, 等一系列的相关技术都有一定的了解, 熟悉常见功能
在自己的项目里落地使用过, 有一定的技术使用经验, 这可以解释为技术广度.
技术深度
读过 Kafka 的底层源码?
对消息中间件的架构设计思想有深刻的理解?
对分布式事务框架 / 中间件的架构设计有过研究?
在每秒百万并发场景下做过底层系统的深入优化和故障处理?
如果你有类似这种过人之处, 那么你才能说你有某些技术深度.
项目经验
你有没有整体负责过几亿注册用户, 几千万日活用户的大规模, 高并发, 分布式, 高可用, 高复杂度的系统架构设计?
或者你负责的一直都是那种公司内部使用的, 几十个人用的 OA 系统, CRM 系统?
这些就是你的项目经验
团队管理
你在互联网公司里带过 20 的团队?
或者你在一个传统 IT 公司里带过 3 个人的小组?
这都是你的团队管理经验.
Dubbo 面试题锦集
默认也推荐使用 netty 框架, 还有 mina.
默认是阻塞的, 可以异步调用, 没有返回值的可以这么做.
推荐使用 zookeeper 注册中心, 还有 Redis 等不推荐.
默认使用 Hessian 序列化, 还有 Duddo,FastJson,Java 自带序列化.
服务失效踢出基于 zookeeper 的临时节点原理.
采用多版本开发, 不影响旧版本.
可以结合 zipkin 实现分布式服务追踪.
核心配置有 dubbo:service/ dubbo:reference/ dubbo:protocol/ dubbo:registry/ dubbo:application/ dubbo:provider/ dubbo:consumer/ dubbo:method/
默认使用 dubbo 协议.
可以直连, 修改配置即可, 也可以通过 telnet 直接某个服务.
流程图见 dubbo.io.
读操作建议使用 Failover 失败自动切换, 默认重试两次其他服务器. 写操作建议使用 Failfast 快速失败, 发一次调用失败就立即报错.
使用过程中的问题可以百度
dubbox 是当当网基于 dubbo 上做了一些扩展, 如加了服务可 restful 调用, 更新了开源组件等.
别的还有 spring 的 spring cloud,Facebook 的 thrift,Twitter 的 finagle 等.
Zookeeper 面试集锦
zookeeper 是一个开源的分布式协调服务框架.
应用场景: 分布式通知 / 协调, 负载均衡, 配置中心, 分布式锁, 分布式队列等.
使用 ZAB 协议.
Paxos 算法看最后文章推荐的书.
选举算法及流程看最后文章推荐的书.
节点类型: 持久节点, 持久顺序节点, 临时节点, 临时顺序节点.
不是永久的, 一次性的, 需要借助第三方工具实现重复注册.
部署模式: 单机模式, 伪集群模式, 集群模式.
集群角色: leader,foller,observer.
集群规则为 2N+1 台, N>0, 即 3 台.
集群需要一半以上的机器可用, 所以, 3 台挂掉 1 台还能工作, 2 台不能.
3.5 版本开始支持动态扩容.
java 客户端: zk 自带的 zkclient 及 Apache 开源的 Curator.
chubby 是 google 的, 完全实现 paxos 算法, 不开源. zookeeper 是 chubby 的开源实现, 使用 zab 协议, paxos 算法的变种.
常用命令: ls get set create delete 等.
小编给大家推荐一个 Java 技术交流群: 967051845! 群内提供设计模式, spring/mybatis 源码分析, 高并发与分布式, 微服务, 性能优化, 面试题整合文档等免费资料! 希望找到更多的同行多多交流! 以下资料, 进群可以免费获得哦
来源: http://www.jianshu.com/p/b364b11db820