面试抽集二

2022-08-04 19:06:56 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

nginx的权重配置

1、轮询(默认) 2、weight 3、ip_hash 4、fair(第三方) 5、url_hash(第三方)

springboot的自动配置

SpringBoot启动的时候加载主配置类(@SpringBootApplication),开启了自动配置功能 @EnableAutoConfiguration

redis有几个库

Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),可以通过配置databases来修改这一数字

redis做缓存的场景

1.全页面缓存 2. 排行榜 3. Session 存储 4. 队列 5. 发布/订阅

maven的打包方式、常用命令

打包: 使用maven-jar-plugin和maven-dependency-plugin插件打包 使用maven-assembly-plugin插件打包在pom.xml中配置: 使用maven-shade-plugin插件打包在pom.xml中配置: 命令: 1、mvn compile 编译,将Java 源程序编译成 class 字节码文件。 2、mvn test 测试,并生成测试报告 3、mvn clean 将以前编译得到的旧的 class 字节码文件删除 4、mvn pakage 打包,动态 web工程打 war包,Java工程打 jar 包。 5、mvn install 将项目生成 jar 包放在仓库中,以便别的模块调用 6、mvn clean install -Dmaven.test.skip=true 抛弃测试用例打包

thymeleaf是怎么引入页面的

th:include 和 th:replace include只是加载,replace是替换

jdk1.9的新特性

1.Java 平台级模块系统 2.Linking 3.JShell : 交互式 Java REPL 4.改进的 Javadoc 5.集合工厂方法 6.改进的 Stream API 7.私有接口方法 8.HTTP/2 9.多版本兼容 JAR

ActiveMQ执行流程

mq执行需要开启mq服务器 MQ就是我主线程可能要发送一个短信,但是这个短信不是自己的程序,如果放到主程序里面,这个短信发送失败,我整个程序都无法执行下去了.所以我们将发送短信这个功能抽取出来,在主线程中使用mq,一旦我需要发送短信的时候就创建一个生产者,创建完毕主线程就继续执行,抽取出来的功能使用监听,一旦监听到主线程生产了一条信息,就立刻执行消费将短信发送出去

用过哪些IO流,具体点

字节流的抽象基类:InputStream和OutputStream; 字符流的抽象基类:Reader和Writer。

线程的调度是抢占式的还是协作式

ava虚拟机都确保在不同的优先级之间使用抢占式线程调度,也就是说,当一个优先级低的线程正在裕兴,而一个高优先级线程准备运行时,虚拟机或早或晚暂停这个优先级低的线程,让高优先级来运行。这样高优先级线程就抢占了低优先级线程。

死锁的产生

1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。 3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。 4、循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个等待环路。

介绍一下什么是MVC

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式

Model(模型)表示应用程序核心(比如数据库记录列表) View(视图)显示数据(数据库记录) Controller(控制器)处理输入(写入数据库记录)

并行与并发的区别

并行是指同一时刻同时做多件事情 并发是指同一时间间隔内做多件事情

守护线程的特征

  • a.线程属性isDaemon的状态为true的。
  • b.当jvm应用中没有运行的用户线程时,守护线程会结束运行。
  • c.将线程变为守护线程,通过设置线程的方法 setDaemon(true)即可,但该方法必须在start()方法之前执行才可以,启动后的线程,不能中途改变线程类型
  • d.如果使用线程池框架ExecuteService,则守护线程会被改变成用户线程,线程的优先级也会被设置成普通线程的优先级。ExecuteService主要是用来管理线程的,不能创建线程。
  • e.守护线程具有传递性,当线程设置成守护线程了,那么它的子线程也是守护线程。

springboot的内置容器

内置的容器有三个分别是Undertow、Jetty、Tomcat

Java里面如何实现对象的深克隆

浅克隆:浅复制仅仅复制所考虑的对象,而不复制它所引用的对象 深克隆:深复制把要复制的对象所引用的对象都复制了一遍

父子类的异常处理

  • 1、对于子类构造器: 1.由于无法捕获父类构造器异常,所以必须抛出大于或等于父类构造器抛出的异常 2.可以新增其它异常
  • 2、对于子类方法: 1.可以选择不抛出异常 2.抛出异常则必须遵从父类方法抛出的异常(异常类型小于等于父类异常,因为在向上造型为父类类型时,调用此方法,会出现父类无法处理的异常类型) 3.不可抛出新的异常(原因同上) 4.当子类方法同时重写了父类和接口中的方法时,则不能抛出异常(除非接口和父类抛出的异常一样,此时可抛出这类异常,原因同第2点一样)

什么是Java序列化,如何实现Java序列化

列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。 可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。

ArrayList和LikedList分别用于哪些产品,为什么

ArrayList底层的实现是数组,所以用下标访问的速度比较快,但是插入和删除元素,会有移动元素的开销,所以速度比LinkedList差。 LikedList底层是链表实现的,所以插入和删除元素时间复杂度较LinkedList好,但是随即访问需要遍历元素,所以效率比ArrayList差。

讲一下什么是Aop

切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点(crosscutting concern)。

mybatis 里面#{}、与${}的区别

使用#{}意味着使用的预编译的语句 使用${}时的sql不会当做字符串处理

mybatis里面的对象

1、SqlSessionFactoryBuilder:负责构建SqlSessionFactory,并且提供了多个build()方法的重载 2、SqlSessionFactory:创建SqlSession实例的工厂 3、SqlSession:用于执行持久化操作的对象

如何解决get,post的乱码问题

get:通过new String的方法进行字节转码 post:对请求直接进行转码或者设置字符集过滤器

spring注入bean的方式

构造方法注入 setter注入 基于注解的注入

svn与git的区别

1.svn是集中式版本控制系统,git是分布式版本控制系统 2.svn是直接与服务器进行交互,git是将文件存到本地然后再推送到服务器 3.svn必须在连网的情况下工作,git可以不连网开发 4.svn易发生冲突,git相对于svn不易发生冲突 5.svn适用于多项目并行开发,git适用于单项目开发 6.svn保存的是文件,git保存是源数据

怎么通过shiro来解决权限控制

第一种“anon”为匿名可访问,配置后,当前设置的请求则不再拦截任何人可以访问。 第二种“authc”为登录(认证)后可访问,配置后,当前请求会被拦截,验证当前请求者为登陆成功状态才会放行(可访问)。 第三种“roles[admin]”为指定角色可以访问,配置后,当前请求会被拦截,只为拥有指定角色的用户放行。 第四种“perms[user:add:*]”为指定全蝎可以访问,配置后,当前请求会被拦截,只为拥有指定权限的用户放行

在权限管理,用户与角色有什么关系

一个用户授权拥有某个角色。 一个用户可拥有多个角色。

对与数据加密有哪些了解

不可逆加密:Hash加密算法/散列算法/摘要算法。 可逆加密:有对称加密和非对称加密。

  • 对称加密:【一个秘钥:文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥】
  • 非对称加密:【两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密】

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106475.html原文链接:https://javaforall.cn

0 人点赞