有一个知名独立博客「左岸读书」,坚持运营11年。最为印象深刻的,是网站的副标题:
一切成就,均源自积累。
我曾经“唯天赋主义”,觉得有些事永远都学不好。但慢慢的我发现,疏于锻炼、但依然是NBA第一中锋的奥尼尔,只有一个。
几十年来,NBA的绝大多数中锋,都是像科比一样,和凌晨四点的太阳一起睁开眼睛,有着成年累月的的坚守。
工作生活中,只有思考的比别人深入、技能比别人精通,才可能形成一点竞争优势壁垒。而我们辛苦创造的壁垒,有时在公司被视为“理所当然”,只有跳槽或被挖角时,才真正成为一个“闪光点”。
72.5%的人通过跳槽实现薪资上涨
经济学家帕累托发现了一个二八定律:80%的财富掌握在20%的人手中。很多人哪怕能力卓绝,在追求财富自由的路上也走得异常艰辛。
微博有一个特别火的话题是:
“为什么公司宁愿花20K招新人,也不愿给老员工加到20K?”
这个话题戳中了很多人的痛处,走上跳槽这条路实属被逼无奈。拿数据说话,根据CSDN &《程序员》杂志发布的「中国软件开发者薪资调查报告」,有32.98%的开发者在过去曾换过工作,其中有72.5%的人实现了薪资上涨。
跳槽加薪,是一条行之有效的道路。但跳槽必有笔试,为了顺利通过笔试环节,很多人都会在面试前大量刷题。美团产品总监曾在脉脉公开建议:“应聘者面试前,应多刷题、多思考”。
如何找到对自己有用的笔试题?
对于刷题,这里有两大误区:一是不按照岗位海量刷题,平白浪费了精力;二是背下大量答案。
这两大误区常有人走,甚至面试后一脸问号:
1、刷了那么多题,为什么笔试没考到?
2、敲了那么多年代码,概念题怎么还会弄混?
3、这个项目面试题之前看过案例,写的代码为什么运行结果错误?
能有什么原因?还不是因为大量刷了错误的题。网上题目五花八门,散乱无章,甚至有的根本不符合目标岗位。
因此,为了更好地准备接下来的面试,我整理了一套系统的Java架构面试题供做Java的朋友们参考:
java进阶架构面试题系列:Tomcat+Mysql+设计模式
一.Tomcat面试
1.解释什么是Jasper?
2.请说明select * from tab的输出结果是什么?
3.请解释如何配置Tomcat来使用IIS和NTLM ?
4.请解释一下什么时候可以使用“.”,什么时候可以使用“[]”?
5.请解释Tomcat的默认端口是什么?
6.解释Tomcat中使用的连接器是什么?
7.阐述Catalina的配置文件有哪些?
8.解释将Tomcat作为一个Windows 服务运行会带来哪些好处?
9.解释何时在Tomcat使用SSL ?
10.解释如何使用WAR文件部署web应用程序?
11.解释什么是Tomcat Valve?
12.说明Tomcat配置了多少个Valve?
13.解释servlet如何完成生命周期?
14.请说明NAT协议的目的是什么?
15.请解释一下MAC代表什么?
16.请解释什么是Tomcat Coyote ?
17.Tomcat的缺省是多少,怎么修改
18.tomcat 如何优化?
二.mysql
- 什么是数据库事务?如果没有事物会有什么后果?事务的特性是什么?
- 什么是脏读?幻读?不可重复读?什么是事务的隔离级别?Mysql的默认隔离级别是?
- 事物隔离是怎么实现的?
- 什么是死锁?怎么解决?(前几问题是我个人最喜欢的连环炮,基本可以看出面试者的基础功)
- SQL的生命周期?关键字的先后顺序?
- 什么是乐观锁?悲观锁?实现方式?
- 大数据情况下如何做分页?
- 什么是数据库连接池?
- 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别?
- 索引设计的原则?
- 如何定位及优化SQL语句的性能问题?
- 某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?
- mysql中 in 和exists 区别
三、设计模式与重构
- 说说几个常见的设计模式(23种设计模式)?
- 设计一个工厂的包的时候会遵循哪些原则?
- 列举一个使用了 Visitor/ Decorator模式的开源项目/库?
- 如何实现一个单例?
- 代理模式(动态代理)?
- 单例模式(懒汉模式,恶汉模式,并发初始化如何解决, volatile与lock的使用)?
- JDK源码里面都有些什么让你印象深刻的设计模式使用,举例看看?
五、分布式
- 什么是CAP定理?
- 说说CAP理论和BASE理论?
- 什么是最终一致性?最终一致性实现方式?
- 什么是一致性Hash?
- 讲讲分布式事务?
- 如何实现分布式锁?
- 如何实现分布式 Session?
- 如何保证消息的一致性?
- 负载均衡的理解?
- 正向代理和反向代理?
- CDN实现原理?
- 怎么提升系统的QPS和吞吐?
- Dubbo的底层实现原理和机制?
- 描述一个服务从发布到被消费的详细过程?
- 分布式系统怎么做服务治理?
- 消息中间件如何解决消息丢失问题?
- Dubbo的服务请求失败怎么处理?
- 对分布式事务的理解?
- 如何实现负载均衡,有哪些算法可以实现?
- Zookeeper的用途,选举的原理是什么?
- 讲讲数据的垂直拆分水平拆分?
- zookeeper原理和适用场景?
- zookeeper watch机制?
- redis/zk节点宕机如何处理?
- 分布式集群下如何做到唯一序列号?
- 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗?
- MQ系统的数据如何保证不丢失?
- 列举出能想到的数据库分库分表策略?
高性能缓存面试题系列:Memcached+Redis
二、Redis
- redis数据结构有哪些?
- Redis缓存穿透,缓存雪崩?
- 如何使用Redis来实现分布式锁?
- Redis的并发竞争问题如何解决?
- Redis持久化的几种方式,优缺点是什么,怎么实现的?
- Redis的缓存失效策略?
- Redis集群,高可用,原理?
- Redis缓存分片?
- Redis的数据淘汰策略?
- redis队列应用场景?
- 分布式使用场景(储存session)?
架构筑基面试题系列:JVM+并发编程+Netty
四、JVM与性能优化
- 描述一下 JVM 加载 Class 文件的原理机制?
- 什么是类加载器?
- 类加载器有哪些?
- 什么是tomcat类加载机制?
- 类加载器双亲委派模型机制?
- Java 内存分配?
- Java 堆的结构是什么样子的?
- 简述各个版本内存区域的变化?
- 说说各个区域的作用?
- Java 中会存在内存泄漏吗,简述一下?
- Java 类加载过程?
- 什么是GC? 为什么要有 GC?
- 简述一下Java 垃圾回收机制?
- 如何判断一个对象是否存活?
- 垃圾回收的优点和原理,并考虑 2 种回收机制?基本原理是什么?
- 深拷贝和浅拷贝?
- 什么是分布式垃圾回收(DGC)?它是如何工作的?
- 在 Java 中,对象什么时候可以被垃圾回收?
- 简述Minor GC 和 Major GC?
- Java 中垃圾收集的方法有哪些?
- 讲讲你理解的性能评价及测试指标?
- 常用的性能优化方式有哪些?
- 说说分布式缓存和一致性哈希?
- 什么是GC调优?
五、网络编程
- TCP建立连接和断开连接的过程?
- HTTP协议的交互流程• HTTP和HTTPS的差异,SSL的交互流程?
- TCP的滑动窗口协议有什么用?
- HTTP协议都有哪些方法?
- Socket交互的基本流程?
- 讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)?
- webservice协议(wsdl/soap格式,与restt办议的区别)?
- 说说Netty线程模型,什么是零拷贝?
- TCP三次握手、四次挥手?
- DNS解析过程?
- TCP如何保证数据的可靠传输的?
开源框架面试题系列:Spring+SpringMVC+MyBatis
微服务架构面试题系列:Dubbo+Spring Boot+Spring Cloud等
最后送福利了,加入 Java 架构开发群:957734884; 可以获取Java工程化、高性能及分布式、高性能、高架构、性能调优、Spring、MyBatis、Netty源码分析等多个知识点高级进阶干货的相关视频资料,还有spring和虚拟机等书籍扫描版,还有更多面试题等你来拿。