Java高开发Java 杂谈

曝光!月薪 5 万的程序员面试题:73% 人都做错,你敢试吗?

2019-04-04  本文已影响4人  java高并发

有一个知名独立博客「左岸读书」,坚持运营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

  1. 什么是数据库事务?如果没有事物会有什么后果?事务的特性是什么?
  2. 什么是脏读?幻读?不可重复读?什么是事务的隔离级别?Mysql的默认隔离级别是?
  3. 事物隔离是怎么实现的?
  4. 什么是死锁?怎么解决?(前几问题是我个人最喜欢的连环炮,基本可以看出面试者的基础功)
  5. SQL的生命周期?关键字的先后顺序?
  6. 什么是乐观锁?悲观锁?实现方式?
  7. 大数据情况下如何做分页?
  8. 什么是数据库连接池?
  9. 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别?
  10. 索引设计的原则?
  11. 如何定位及优化SQL语句的性能问题?
  12. 某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?
  13. mysql中 in 和exists 区别

三、设计模式与重构

  1. 说说几个常见的设计模式(23种设计模式)?
  2. 设计一个工厂的包的时候会遵循哪些原则?
  3. 列举一个使用了 Visitor/ Decorator模式的开源项目/库?
  4. 如何实现一个单例?
  5. 代理模式(动态代理)?
  6. 单例模式(懒汉模式,恶汉模式,并发初始化如何解决, volatile与lock的使用)?
  7. JDK源码里面都有些什么让你印象深刻的设计模式使用,举例看看?

五、分布式

  1. 什么是CAP定理?
  2. 说说CAP理论和BASE理论?
  3. 什么是最终一致性?最终一致性实现方式?
  4. 什么是一致性Hash?
  5. 讲讲分布式事务?
  6. 如何实现分布式锁?
  7. 如何实现分布式 Session?
  8. 如何保证消息的一致性?
  9. 负载均衡的理解?
  10. 正向代理和反向代理?
  11. CDN实现原理?
  12. 怎么提升系统的QPS和吞吐?
  13. Dubbo的底层实现原理和机制?
  14. 描述一个服务从发布到被消费的详细过程?
  15. 分布式系统怎么做服务治理?
  16. 消息中间件如何解决消息丢失问题?
  17. Dubbo的服务请求失败怎么处理?
  18. 对分布式事务的理解?
  19. 如何实现负载均衡,有哪些算法可以实现?
  20. Zookeeper的用途,选举的原理是什么?
  21. 讲讲数据的垂直拆分水平拆分?
  22. zookeeper原理和适用场景?
  23. zookeeper watch机制?
  24. redis/zk节点宕机如何处理?
  25. 分布式集群下如何做到唯一序列号?
  26. 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗?
  27. MQ系统的数据如何保证不丢失?
  28. 列举出能想到的数据库分库分表策略?

高性能缓存面试题系列:Memcached+Redis

二、Redis

  1. redis数据结构有哪些?
  2. Redis缓存穿透,缓存雪崩?
  3. 如何使用Redis来实现分布式锁?
  4. Redis的并发竞争问题如何解决?
  5. Redis持久化的几种方式,优缺点是什么,怎么实现的?
  6. Redis的缓存失效策略?
  7. Redis集群,高可用,原理?
  8. Redis缓存分片?
  9. Redis的数据淘汰策略?
  10. redis队列应用场景?
  11. 分布式使用场景(储存session)?

架构筑基面试题系列:JVM+并发编程+Netty

四、JVM与性能优化

  1. 描述一下 JVM 加载 Class 文件的原理机制?
  2. 什么是类加载器?
  3. 类加载器有哪些?
  4. 什么是tomcat类加载机制?
  5. 类加载器双亲委派模型机制?
  6. Java 内存分配?
  7. Java 堆的结构是什么样子的?
  8. 简述各个版本内存区域的变化?
  9. 说说各个区域的作用?
  10. Java 中会存在内存泄漏吗,简述一下?
  11. Java 类加载过程?
  12. 什么是GC? 为什么要有 GC?
  13. 简述一下Java 垃圾回收机制?
  14. 如何判断一个对象是否存活?
  15. 垃圾回收的优点和原理,并考虑 2 种回收机制?基本原理是什么?
  16. 深拷贝和浅拷贝?
  17. 什么是分布式垃圾回收(DGC)?它是如何工作的?
  18. 在 Java 中,对象什么时候可以被垃圾回收?
  19. 简述Minor GC 和 Major GC?
  20. Java 中垃圾收集的方法有哪些?
  21. 讲讲你理解的性能评价及测试指标?
  22. 常用的性能优化方式有哪些?
  23. 说说分布式缓存和一致性哈希?
  24. 什么是GC调优?

五、网络编程

  1. TCP建立连接和断开连接的过程?
  2. HTTP协议的交互流程• HTTP和HTTPS的差异,SSL的交互流程?
  3. TCP的滑动窗口协议有什么用?
  4. HTTP协议都有哪些方法?
  5. Socket交互的基本流程?
  6. 讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)?
  7. webservice协议(wsdl/soap格式,与restt办议的区别)?
  8. 说说Netty线程模型,什么是零拷贝?
  9. TCP三次握手、四次挥手?
  10. DNS解析过程?
  11. TCP如何保证数据的可靠传输的?

开源框架面试题系列:Spring+SpringMVC+MyBatis

微服务架构面试题系列:Dubbo+Spring Boot+Spring Cloud等

最后送福利了,加入 Java 架构开发群:957734884; 可以获取Java工程化、高性能及分布式、高性能、高架构、性能调优、Spring、MyBatis、Netty源码分析等多个知识点高级进阶干货的相关视频资料,还有spring和虚拟机等书籍扫描版,还有更多面试题等你来拿。

image
上一篇 下一篇

猜你喜欢

热点阅读