关于后端:BAT大厂java程序员面试必问JVMSpring分布式tomcatMyBatis

8次阅读

共计 3840 个字符,预计需要花费 10 分钟才能阅读完成。

前言就目前国内的面试模式来讲,在面试前踊跃的筹备面试,温习整个 Java 常识体系将变得十分重要,能够很负责任的说一句,温习筹备的是否充沛,将间接影响你入职的成功率。但很多小伙伴却苦于没有适合的材料来回顾整个 Java 常识体系,或者有的小伙伴可能都不晓得该从哪里开始温习。面试:如果不准备充分的面试,齐全是浪费时间,更是对本人的不负责。Java 面试的重点:数据结构与算法,JVM 内存构造、垃圾回收器、回收算法、GC、并发编程相干 (多线程、线程池等)、NIO/BIO、性能优化、设计模式、Spring 框架:分布式相干:Redis 缓存、统一 Hash 算法、分布式存储、负载平衡等,微服务以及 Docker 容器等。因为头条篇幅起因,不能给大家一个全面的解析,开端小编会分享一个 Java 根底到架构面试文档,心愿能帮忙到正在致力的敌人。JVM 解析 1、垃圾回收的长处和原理。并思考 2 种回收机制。Java 语言中 - 一个显著的特点就是引入了垃圾回收机制,使 C ++ 程序员最头疼的内存治理的问题迎刃而解,它使得 Java 程序员在编写程序的时候不再须要思考内存治理。因为有个垃圾回收机制,Java 中的对象不再有“作用域”的概念,只有对象的援用才有 ” 作用域”。垃圾回收能够无效的避免内存泄露,无效的应用能够应用的内存。垃圾回收器通常是作为一个独自的低级别的线程运行,不可预知的状况下对内存堆中曾经死亡的或者长时间没有应用的对象进行分明和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。2、什么是类加载器,类加载器有哪些? 实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。次要有一下四品种加载器: 启动类加载器(BootstrapClassL oader) 用来加载 Java 外围类库,无奈被 Java 程序间接援用。扩大类加载器 (extensions class loader): 它用来加载 Java 的扩大库。Java 虚拟机的实现会提供一个扩大库目录。该类加载器在此目录外面查找并加载 Java 类。零碎类加载器(system class loader): 它依据 Java 利用的类门路(CL ASSPATH) 来加载 Java 类。- 般来说,Java 利用的类都是由它来实现加载的。能够通过 Classl oader.getSystemClassl _oader()来获取它。用户自定义类加载器,通过继承 java.lang.ClassL oader 类的形式实现。3、java 内存调配寄存器: 咱们无法控制。动态域:| static 定义的动态成员。常量池: 编译时被确定并保留在. class 文件中的(final) 常量值和 - 些文本润饰的符号援用(类和接口的全限定名,字段的名称和描述符, 办法和名称和描述符)。非 RAM 存储: 硬盘等永恒存储空间。堆内存: new 创立的对象和数组,由 Java 虚拟机主动垃圾回收器治理,存取速度慢。栈内存: 根本类型的变量和对象的援用变量(堆内存空间的拜访地址),速度快,能够共享,然而大小与生存期必须确定,不足灵活性。1.Java 堆的构造是什么样子的? 什么是堆中的永恒代(Perm Genspace) ?JVM 的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在 JVM 启动的时候被创立。对象所占的堆内存是由主动内存管理系统也就是垃圾收集器回收。堆内存是由存活和死亡的对象组成的。存活的对象是利用能够拜访的,不会被垃圾回收。死亡的对象是利用不可拜访尚且还没有被垃圾收集器回收掉的对象。- 直到垃圾收集器把这些对象回收掉之前,他们会始终 占据堆内存空间。更多解析

Spring 解析 1、怎么用注解的形式配置 Spring?Spring 在 2.5 版本当前开始反对用注解的形式来配置依赖注入。能够用注解的形式来代替 XML 形式的 bean 形容,能够将 bean 形容转移到组件类的外部,只须要在相干类上、办法上或者字段申明上应用注解即可。注解注入将会被容器在 XML 注入之前被解决,所以后者会笼罩掉前者对于同 - 个属性的处理结果。注解拆卸在 Spring 中是默认敞开的。所以须要在 Spring 文件中配置一下能力应用基于注解的拆卸模式。如果你想要在你的应用程序中应用对于注解的办法的话,请参考如下的配置。

在 <context:annotation-conf ig/> 标签配置实现当前,就能够用注解的形式在 Spring 中向属性、办法和构造方法中主动拆卸变量。上面是几种比拟重要的注解类型:@Required: 该注解利用于设值办法。@Autowired: 该注解利用于有值设值办法、非设值办法、构造方法和变量。@Qulfier: 该注解和 @Autowired 注解搭配应用,用于打消特定 bean 主动拆卸的歧义。JSR. 250 Annotations:Spring 反对基于 JSR-250 注解的以下注解,@Resource、@PostConstruct 和 @PreDestroy。更多解析

分布式解析 1、四种类型的 znode1、| PERSISTENT- 长久化目录节点客户端与 zookeeper 断开连接后,该节点仍旧存在 2、| PERSISTENT SEQUENTIAL- 长久化程序编号目录节点客户端与 zookeeper 断开连接后,该节点仍旧存在,只是 Zookeeper 给该节点名称进行程序编号 3、1 EPHEMERAL- 长期目录节点客户端与 zookeeper 断开连接后,该节点被删除 4、EPHEMERAL SEQUENTIAL- 长期程序编号目录节点. 客户端与 zookeeper 断开连接后,该节点被删除,只是 Zookeeper 给该节点名称进行程序编号

2、获取分布式流程

在获取分布式锁的时候在 locker 节点下创立长期程序节点,开释锁的时候删除该长期节点。客户端调用 createNode 办法在 locker 下创立长期程序节点,而后调用 gethildren(“locker”)来获取 locker 上面的所有子节点,留神此时不必设置任何 Watcher。客户端获取到所有的子节点 path 之后,如果发现自己创立的节点在所有创立的子节点序号最小,那么就认为该客户端获取到了锁。如果发现自己创立的节点并非 locker 所有子节点中最小的,阐明本人还没有获取到锁,此时客户端须要找到比本人小的那个节点,而后对其调用 exist()办法,同时对其注册事件监听器。之后,让这个被关注的节点删除,则客户端的 Watcher 会收到相应告诉,此时再次判断本人创立的节点是否是 locker 子节点中序号最小的,如果是则获取到了锁,如果不是则反复以上步骤持续获取到比本人小的一一个节点并注册监听。以后这个过程中还须要许多的逻辑判断。

更多 解析

解析 tomcat 文章材料都整顿在一个文档外面了,近 500 道面试题,[点击这里即可](https://docs.qq.com/doc/DY0Fr…)1、tomcat 中如何禁止列目录下的文件在{tomcat_ home}/ conf/web. xml 中,把 listings 参 数设置成 false 即可,如下:

2、Tomcat 有几种部署形式 tomcat 中四种部署我的项目办法第一种办法: 在 tomcat 中的 conf 目录中,在 server. xml 中的,<host/> 节点中增加:

至于 Context 节点属性,可具体见相干文档。第二种办法: 将 web 我的项目文件件拷贝到 webapps 目录中。第三种办法: 很灵便,在 conf 目录中,新建 Catalina (留神大小写)| locathost 目录,在该目录中新建一一个 xml 文件,名字能够随便取,只有和以后文件中的文件名不反复就行了,该 xml 文件的内容为:

第 3 个办法有个长处,能够定义别名。服务器端运行的项目名称为 path,内部拜访的 URL 则应用 XML 的文件名。这个办法很不便的暗藏了我的项目的名称,对一些项目名称被固定不能更换,但内部拜访时又想换个门路,十分无效。第 2、3 还有长处,能够定义一些共性配置,如数据源的配置等。第四种方法: 能够用 tomcat 在线后盾管理器,- 般 tomcat 都关上了,间接上传 war 就能够更多解析

MyBatis 解析 1、Mybatis 是如何进行分页的? 分页插件的原理是什么?Mybatis 应用 RowBounds 对象进行分页,也能够间接编写 sql 现分页, 也能够应用 Mybatis 的分页插件。分页插件的原理: 实现 Mybatis 提供的接口,实现自定义插件,在插件的拦挡办法内拦挡待执行的 sql, 而后重写 sql。举例:

拦挡 sql 后重写为;

2、MyBatis 的益处是什么?MyBatis 把 sql 语句从 Java 源程序中独立进去,放在独自的 XML 文件中编写,给程序的保护带来了很大便当。MyBatis 封装了底层 JDBC API 的调用细节,并能主动将后果集转换成 Java Bean 对象,大大简化了 Java 数据库编程的反复工作。因为 MyBatis 须要程序员本人去编写 sql 语句,程序员能够联合数据库本身的特点灵便管制 sql 语句,因而可能实现比 Hibernate 等全自动 orm 框架更高的查问效率,可能实现简单查问。更多解析

[点击这里即可](https://docs.qq.com/doc/DY0Fr…)获取这个 500 面试题的 PDF 材料哟!还有更多材料蕴含 Spring,MyBatis,Netty 源码剖析,高并发、高性能、分布式、微服务架构的原理,JVM 性能优化这些成为架构师必备的常识体系。置信对于曾经工作和遇到技术瓶颈的码友,在这里会有你须要的内容。

正文完
 0