2019年高级Java程序员面试题汇总,这些你都会了吗?

2019年高级Java程序员面试题汇总,你都会了吗?

引言

在金九银十期间,楼主在经历了两周的跳槽求职路后,终于成功拿到offer,距今已经入职快一个月了,因此,这几天抽空将之前的面试题做了个汇总,一方面自己以后回顾学习用,一方面为大家奉送上一份秋收的福利。

JDK

  • jdk1.8版本后的新特性有哪些?

  • 如何避免空指针异常?

Dubbo

  • Dubbo是什么?

  • ==Dubbo 和 Spring Cloud 有什么区别?==

  • dubbo都支持什么协议,推荐用哪种?

  • Dubbo需要 Web 容器吗?

  • Dubbo内置了哪几种服务容器?

  • Dubbo里面有哪几种节点角色?

  • Dubbo的服务注册与发现的流程图是怎样的?

  • Dubbo默认使用什么注册中心,还有别的选择吗?

  • Dubbo有哪几种配置方式?

  • Dubbo 核心的配置有哪些?

  • Dubbo启动时如果依赖的服务不可用会怎样?

  • Dubbo推荐使用什么序列化框架,你知道的还有哪些?

  • Dubbo默认使用的是什么通信框架,还有别的选择吗?

  • Dubbo有哪几种负载均衡策略,默认是哪种?

  • Dubbo支持服务多协议吗?

  • Dubbo可以对结果进行缓存吗?

  • Dubbo服务之间的调用是阻塞的吗?

  • Dubbo支持分布式事务吗?

  • Dubbo支持服务降级吗?

  • Dubbo的通信采用什么?

  • 服务提供者能实现失效踢出是什么原理?

  • Dubbo的管理控制台能做什么?

  • 是否看过Dubbo的代码底层原理?具体有哪些?

  • Dobbo的调用流程是什么?

  • Dobbo支持动态添加服务吗?

Zookeeper

  • zookeeper是什么?

  • zookeeper都有哪些功能?

  • zookeeper有哪几种部署方式?

  • zookeeper使用什么协议?

  • zookeeper的通知机制是怎样的?

  • zookeeper是如何实现分布式锁的?

  • zookeeper的选举机制及流程是什么?

  • zookeeper集群是如何搭建的?

  • zookeeper集群最少要几台机器,集群规则是怎样的?

  • zookeeper集群中有几种角色?

  • zookeeper集群支持动态添加机器吗?

  • zookeeper集群中怎么保证主从节点的状态同步?

  • zookeeper集群中中为什么要有主节点?

  • zookeeper集群如果有3台机器,挂掉一台集群还能工作吗?挂掉两台呢?

  • zookeeper的java客户端都有哪些?

  • zookeeper常用的命令有哪些?

Strut2

  • Strtut2的优点和缺点是什么?

  • 它和spring有什么区别?

Spring系列

  • ==spring的IOC和AOP原理是什么?==

  • spring的启动加载流程是怎样的?

  • ==springMVC的底层执行流程是怎样的?重要的类有哪些?==

  • springboot支持的日志有哪些?默认的是什么?怎么配置

  • springboot的数据源有哪些?怎么配置?

  • springcloud的常用开发框架有哪些?

  • springcloud的熔断是怎么实现的?原理是什么?

  • ==springcloud的eureka和zoopeeker的区别是什么?==

  • springcloud的网管的主要做了哪些?

  • springcloud里bus的底层通信是用的什么?

Redis系列

  • ==Redis你们用的是单机还是集群?集群如何搭建?==

  • ==Redis是什么?都有哪些使用场景?==

  • ==Redis的基本数据类型都有哪些?==

  • Redis在开发中常用到哪些数据类型?

  • Redis中hash的数据结构是什么?

  • Redis集群数据不同步有可能是什么原因?

  • 请实现用Redis做登录,错误次数为最多五次,时间为60秒

  • Redis的哨兵机制原理是什么?

  • Redis的持久化方法有哪些?

  • Redis的缓存穿透是什么?怎么解决?

  • Redis怎么实现分布式锁?

  • Redis分布式锁有什么缺陷?

  • Redis如何做内存优化?

  • Redis淘汰策略有哪些?

  • Redis常见的性能问题有哪些?该如何解决?

  • Redis支持的 java 客户端都有哪些?

  • Redis为什么是单线程的?

  • Redis的管道是什么?你们什么时候用?怎么使用的?

Mysql系列

  • MySQL设计表的三大范式是什么?

  • MySQL的selete * 和selte 全字段的区别?

  • MySQL的selete *除了是全字段扫描外为什么慢?

  • MySQL如何做优化?

  • MySQL的常用SQL语句优化有哪些?

  • MySQL索引的作用?和它的优点缺点是什么?

  • MySQL有哪些索引(或者说索引类型有哪些)?

  • MySQL的主键和索引有什么区别?

  • MySQL创建索引的原则是什么?

  • MySQL的索引在哪些情况下会失效?

  • MySQL的索引原理是什么?

  • MySQL的存储引擎有哪些?

  • MySQL的最左原则是什么?

  • MySQL的乐观锁和悲观锁?

  • 如果在a、b、c三个字段上建立复合索引,那么有几个索引?a、c、b、c两个索引会生效吗?

  • MySQL的聚簇索引和非聚簇索引是什么?

  • MySQL的是传递性是什么?如何来保证?

  • 如何判断SQL语句是否索引用上了?

  • MySQL调优时用什么方法或命令进行排查?命令的回显结果集中哪些子dan是需要重点关注的?

  • MySQL进行全表扫描是会触发表锁吗?

  • MySQL如何做分表?

  • 已知现在有一个一千万数据的日志记录表,每天会向里面新增5000条记录,如何优化?

  • 如何做大数据量表的查询和拆分?如果拆分怎么拆?有哪些方式?

  • 跨表查询有哪些方式?你最多做过几表联查?

  • 事物的隔离级别有哪些?

  • 你们每天的数据量大概有多少?

  • 你们最大的一张表多大?

  • mysql中如何查看执行计划?如何做sql优化?

Java多线程

  • 线程安全的数组有哪些?

  • 线程安全的集合有哪些?

  • hashMap为什么不是线程安全的?底层原理是什么?

  • 请用代码实现同时开启一个线程打印1~52,开启另一个线程打印A~Z,最终交替打印1A2B3C…这样的数据

  • Java里实现线程的方式有哪些?各自的优缺点是什么?

  • 你如何理解同步、异步、阻塞、非阻塞?

  • 你的程序中用到了哪些锁?是如何实现的?

消息中间件

  • ActiveMQ是什么?

  • ActiveMQ的应用场景有哪些?

  • ActiveMQ有哪些优缺点?

  • ActiveMQ在应用中可以保证分布式事物吗?是怎么是实现的?有哪些优缺点?

  • 常用的MQ的对比了解吗?

  • kufaka原理是什么?为什么快?

线程池

  • Java里线程池常用的有哪些?

  • 线程池在你的生产开发中有哪些应用场景?是如何使用的?

  • 线程池的原理是什么?

事物

  • 数据库事务的四大特性是什么?

  • 分布式事物如何保证?

  • springcloud的分布式事物如何保证?

  • 可以用Redis来实现分布式事物吗?

  • 什么是事物的传导性?有哪些问题?

  • 事务的CAP理论是什么?

  • 你们在生成中用到了哪种方式来保证事务一致性?

JVM

  • JVM的内存模型是什么?每个区的作用是什么?

  • 如何进行JVM调优?

  • 如何对线程服务进行JVM排查和优化?

  • JVM有几种算法?

设计模式

  • 常用的设计模式有哪些?

  • 请写出一个单例模式(要求是线程安全的)

  • 单例模式的双重检查机制如何实现?(DCL)

其他

  • Nginx可以做哪些事情?

  • Nginx有几种负载均衡?

  • Nginx的轮询里一致性哈希算法的底层原理是什么?

  • Nginx如何避免缓存雪崩

  • 服务器的CUP超负荷了,如何排查是哪个项目的?

  • 如何根据CPU的负载情况定位代码和线程所在?

  • Java程序里如果有无限for循环的代码导致CPU负载超高,如何排查?

  • 在爬虫里如何实现用户登录?

  • 你是如何让你的爬虫项目避过一些网站的防爬机制的?

  • solr的原理是什么?是怎么保证排序的?

  • solr在你的项目中起到了什么作用?

  • MyBatis里${}和#{}的区别是什么?发生SQL注入的原理是什么?

  • MyBatis里可以返回哪些对象?

  • MyBatis在开发中什么情况下回用到${}符号?

  • 常用的linux命令,并阐述作用

  • 当你请求了一个url地址后,它的后面都发生了什么?

  • maven的生命周期有哪些?

  • 前端的标签选择器有哪些?

  • 常见的页面状态有哪些?

程序设计

  • 已知现在要在首页上添加一个日打赏榜的功能,请说以下该如何实现?

  • 已知你现在有一个定时任务,如何保证高可用?

  • 如果为了保证高可用,有多个定时任务,如何做到只有一个定时任务正常执行?

  • 如果定时任务挂了,如何让其他定时任务继续执行?

  • 如何让你设计一个可以抗住大数据高并发的项目,你怎么设计?

  • 设计和实现一个支持挂接多个子系统的单点登录系统。

    • 要求挂接多个域名的站点思路

    • 一次登录,在多系统使用思路

    • 防跨站***思路

基础知识

  • ==和 equals 的区别?

  • string、stringBuilder、SrtingBuffer的区别?

  • Object作为父类,它里面有哪些方法?

  • HashMap和HashTable的区别?

  • map集合的底层数据结构是什么?原理是什么?

  • HashMap最大可以存储多少数据?

  • ArrayList 和 LinkedList 的区别是什么?

  • ArrayList 和 Vector 的区别是什么?

  • Array 和 ArrayList 有何区别?

  • 说一下 HashMap 的实现原理?

  • 说一下 HashSet 的实现原理?

  • 如何决定使用 HashMap 还是 TreeMap?

  • List、Set、Map 之间的区别是什么?

  • java.util.concurrent包下使用过哪些?

  • HashMap的工作原理是什么?还有什么处理哈希冲突的方法?

编程题

  • 已知现有两个常量数组,请将他们变为一个有序的数组

  • 如何用一次遍历的方式,将数组内的数字(重复)进行有序排序

  • 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

  • 给定一个整数sum,从有n个有序元素的数组中寻找元素a,b 使得a+b的结果最接近sum,最快的平均时间复杂度是?

面试技术外的问题

  • 你们公司是做什么的?

  • 你们现在用的框架是什么?

  • 你在你们公司主要负责做什么?

  • 你为什么离职?

  • 你求职会优先考虑哪些?

  • 你期望薪资是多少?

  • 你目前的薪资多少?

  • 你们的五险一金是怎么交的?

  • 你了解我们公司吗?

  • 你最快能什么时间入职?

  • 你还有哪些问的吗?

  • 你有哪些是你做的Java项目中你感觉最有自豪感的?因为什么?技术难度有哪些?

主主配置:
#group_concat查询出来最大长度
group_concat_max_len = 4294967295
#最多连接数
max_connections = 500
#最大包数量
max_allowed_packet = 4294967295
show_compatibility_56 = ON
innodb_file_per_table = ON
#缓冲区大小
innodb_buffer_pool_size = 2G
server-id = 1
#GTID用于在binlog中唯一标识一个事务
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin = /var/lib/mysql/mysql-bin.log
#binlog日志文件保留时间
expire_logs_days = 3
#mysql复制STATEMENT模式和ROW模式混合
binlog_format = mixed
log_bin_index = /var/lib/mysql/mysql-bin.index
#表示每sync_binlog次事务提交,MySQL调用文件系统的刷新操作将缓存刷下去
sync_binlog = 1
max_binlog_size = 500M
binlog-do-db = master
skip_slave_start = 1
max_relay_log_size = 4G
relay_log_recovery = 1
relay_log_purge = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE
replicate-do-db = master
slave-parallel-type=LOGICAL_CLOCK
replicate-ignore-db = his
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-wild-ignore-table=his%.
replicate-wild-ignore-table=master%.ACTIVEMQ%
replicate-wild-ignore-table=master%.QUARTZ
replicate-wild-ignore-table=master%.T_ACTIVEMQ%
replicate-wild-ignore-table=master%.T_ALARM%
slave-skip-errors = 1049
slave_parallel_workers = 16
master-info-file = /var/lib/mysql/master.info
relay-log = /var/lib/mysql/mysql-relay-bin.log

Author: victor

阅读次数 3

发表评论

电子邮件地址不会被公开。 必填项已用*标注