面试题总结

1.java语言的基本特性?
面向对象、异常处理、多线程、跨平台、自动垃圾回收机制
2.java程序的执行过程?
首先编写一个Java程序,改名为.Java结尾的文件用Javac把文件编译成字节码文件,其中经历了类加载器生成字节码文件,其中字节码校验器会检验程序是否有异常,等程序执行完以后其中的垃圾处理机制回自动处理掉垃圾,最后就可以在页面生成结果。
3.java中的数据类型?
基本数据类型:byte short int long char boolean float double
复合数据类型:类 对象 接口
4.int 与integer的区别?
数据类型 保存位置 初始值 实例化
int 基本数据类型 栈区 0 不需要
integer 符合数据类型 堆区和栈区 Null 需要实例化

5.±/与++/-- 的运算优先级?
++ – 是同级别,优先于±
/
6.break 与continue的区别?
break:跳出本次循环/终止程序运行
continue:跳出本下次进入下一次
7.java中for/while /do…while循环的区别?
for 要声明循环次数 先判断在执行
while 不用声明循环次数
Do…while 先执行一次在进行判断

8.java中类和对象的关系?
类是对象的模板,对象是由类创建的,类创建对象的过程叫做实例化
9.java中静态元素与实例元素的区别?
内存分配 修饰符
静态元素 在运行前已经分配好内存 有static修饰
实例元素 运行时才分配内存

10.java中基本类型与其对应的封装类的区别?
基本数据类型 分配在内存在栈区 数据
封装类 分配在内存的堆区和栈区 对象

11.java中接口与抽象类的区别?
接口 有interface关键字 用implements关键字 要被实现 一次可以实现多个
抽象类 有abstract关键字 用extends关键字 要被继承 子类只能继承一个抽象类

12.java中常见的内部类有几种,有什么特点?
成员内部类:在类中创建一个内部类
方法内部类:在方法中创建一个内部类
静态嵌套类:成员内部类加上static关键字
匿名内部类:抽象类、接口的子类
13.子类可以继承父类的那些元素?
在同一个包中:除了private访问限制修饰符修饰的变量和方法外都可以继承
在不同包中:除了private和缺省的修饰符修饰的变量和方法剩下的可以继承
14.==和equals 的区别是什么?
== 引用类型比较引用,基本类型比较数值
equals 默认比较引用,被String或者integer重写后比较数值

15.collection与collections的区别?
collection 处理单例数据的顶级接口
collections 集合操作的辅助类

16.java中异常处理的过程?
throws 异常类:声明可能抛出异常,不处理
throw try{}catch:抛出一个具体的异常类
17.java中Error与Exception的区别?
Error 错误,不可处理的
Exception 异常,可处理的

18.解释java中异常处理常用的关键字的作用?
throws 异常类:声明可能抛出异常,不处理
throw try{}catch:抛出一个具体的异常类
finally:修饰的是一定会被执行的,先于return执行
19.String、StringBuffer 与StringBuilder 之间区别?
修饰符 线程安全 扩容机制 运行速度
String 有final修饰,为不可变的 添加一个新的会new一个对象,在堆区再次开辟一个空间 3
StringBuffer 没有final修饰,可变的 线程不安全 可在原有的内存上追加字符串 1
StringBuilder 线程安全的 2

20.list. Set. Map之间的区别是什么?
21.HashMap和Hashtable有什么区别?
22.HashMap的原理
可以把它看作一张地图,当传入一个key值以后,key.hashcode()算出hash值,然后根据hash把value保存在bucket中。
23.ArrayList和LinkedList 的区别是什么?
collection
处理单列数据的顶级接口 list 保存有序的可重复的 ArrayList 动态数组结构 查询速度快 增删操作慢
Linklist 双向列表结构 查询速度慢 增删操作快
set 无序的不可重复的 Hashset
Map
处理键值对数据的顶级接口 HashMap 线程不安全的 Key和value都可以为null 初始值为16
Hashtable 线程安全的 Key和value都不能为null 初始值为11

24.java中字节流与字符流的区别?
字节流:传递一个字节 8为二进制的数据
字节输入流用:inputStream 输出流用:outputStream
字符流:传递两个字节16为二进制的数据
字符输入流用:read 输出流用writer
25.说一说tcp协议的3次握手?
浏览器给服务器发送一条请求,服务器同意这个请求回复浏览器,游览器看到答复开始给服务器传送数据
3次握手是个tcp传输数据更加安全可靠
26.动态代理是什么?有哪些应用?怎么实现动态代理?
程序员写一条指令让程序自己根据这条指令对应的元素
Sql语句查询的时候(if choose where set)
Aop的实现
JDK动态代理和CGlib动态代理
27.java动态代理,cglib动态代理
JDK动态代理:基于接口的代理,生成目标对象接口的子类
CGlib动态代理:基于类的代理,生成目标类的子类
28.JSP和servlet 有什么区别?
Jsp Java服务器页面 HTML页面嵌套Java程序 页面显示
Servlet 运行在服务器上处理用户请求并做出相应的Java程序 Java程序成嵌套HTML页面 业务逻辑的控制

29.servlet生命周期
创建实例化—初始化(init)—对请求进行响应—销毁
30.forward和rediret的区别?
forward 转发 访问路径前后一致 访问的是同一对象 可以共享request里面的数据 效率高
rediret 重定向 访问历经前后不一致 访问的不是同一对象 不可共享 效率低

31.java中什么是序列化和反序列化,如何操作?
序列化:把Java对象转换为字节顺序的过程 实现Serializable接口
反序列化:把字节序列转换成Java对象的过程
32.什么是多线程,有几种创建方式,有什么区别?
多个线程同时访问多个资源
4中创建方式:1.继承Thread类 2.实现Runable接口 3.实现Callable接口 4.线程池创建 前两者重写了run方法没有返回值 后两者有返回值
33.线程池的创建方式?
7中方式:最常用的一种为ThreadpollExecutor
34.线程中sleep方法与wait方法的区别?
Sleep 来自Thread 不会释放锁 不可被唤醒
wait 来自Object 会释放锁 可被唤醒

35.说一说线程中的生命周期?
创建状态—就绪状态–运行状态—阻塞状态—死亡状态
36.什么是线程同步,为什么会有线程同步,具体的实现方式有几种?
多条线程同时操作同一资源,如果一个线程没有执行完操作,那么其他线程就得在外等候该线程执行完之后才能选择一个进入cpu开始执行
如果不实现线程同步那么在多个线程访问同一资源的时候一条线程还没有执行完另一条线程就和会进入cpu开始执行使最后返会地节后不一致
同步代码块 同步方法 使用锁
37.什么是TCP,什么是UDP,他们各自的优缺点是什么?
TCP 传输控制协议 有三次握手数据传输安全 传输速度慢 可以传输大数据
UDP 用户数据报协议 数据传输不安全 传输速度快 不能传送较大数据

38.什么是反射,如何得到一个java类的反射对象?
在运行状态中,对任意一个类都能获取它的变量和方法,对于任意一个对象都能调用它的方法和属性这就是反射
调用某个类地class属性都得到class对象 调用getlass()方法
39.什么是泛型?
把原有的类型参数化,方便调用
40.RequestDispatcher与sendRedirect的区别?

41.post与get的区别?
post 不会把数据保存在游览器上 传输数据大小没有限制 传输安全
get 会把数据保存在游览器上 传输数据大小有限制 不安全,参数会明文限制在url上

42.JSP中的9大内置对象分别是什么?
Request response application cofing page page context cookie session exception
43.session和cookie区别
session 保存在服务器上 访问的多了占用服务器内存
cookie 保存在游览器上 一个cookie只能存储4k大小的数据,浏览器最多只能由20个cookie

44.会话跟踪技术,HTTP三次握手
因为http是一个无状态的协议,他在发送完以后,不会留下标记,服务器就不知道是谁发送的请求
所有要有会话跟踪技术,让游览器可以识别是谁发送的请求
有四种方式:
重写url 隐藏表单域 cookie session
浏览器给服务器发送一条请求,服务器同意这个请求回复浏览器,游览器看到答复开始给服务器传送数据
45.MyBatis中实现对一查询/一对多查询的配置方式有几种,分别是什么?
两种
一种是:嵌套select 一种是嵌套resultmap
46.通常一个Xml映射文件:都会写一个Dao接口与之对应,请问,这个Dao接
口的工作原理是什么? Dao接口里的方法,参数不同时,方法能重载吗?
原理: ORM 对象关系映射
核心对象 动态SQL
不可以重载,因为重载以后会在映射文件里面重新生成一个新的sql语句
47.说一下MyBatis 的一级缓存和 二级缓存?
一级缓存:一级缓存是默认开启的,当使用sqlsessionopen后一级缓存进开启了
二级缓存:二级缓存是在namespace范围内,需要手动开启的
48.MyBatis分页原理
两种
一种是写一端命令在每个需要分页的sql语句末尾加上limit
另一种是配置分页插件pagehepper
49.#{}与${}之间的区别
#{}:预编译 是一个占位符 可以防止sql注入
${}:拼接sql语句
50.为什么要使用spring?
因为spring可以解耦,使用AOP编程,可以便于测试,可以继承各种框架,声明事物,简化javaee的api使用难度
51.FactoryBean与BeanFactory
FactoryBean:是Spring提供实例化bean的接口
BeanFactory:是spring工厂,保存实例化好的对象
52.Spring的loc是什么?
控制反转:把java对象的创建和维护权力交给spring工厂来管理和维护
53.实现依赖注入的常见方式有几种?
构造方法注入 set注入 注解注入(Autowired spring提供【bytype】和Resource javaee提供【byname】)
54.说一下spring mvc运行流程?
前端页面发送一条http请求,到中央控制器后中央控制器把请求交给url解析器解析成请求路径,在返回中央控制器,中央控制器再把请求路径交给控制适配器,控制适配器又把它交给处理请求的控制器,处理请求的控制器把它解析成moudleandview并交由控制适配器返回给中央控制器,中央控制器再把moduleandview交给视图解析器,视图解析器把它处理成.jsp文件交由中央控制器,中央控制器把它交给jsp页面处理成html数据再有中央控制器交还给html页面。
55.什么是AOP,为什么要使用AOP,常见的AOP的实现方式有一种分别是什么?
AOP:面向切面
使用AOP可以在需要使用系统需求的位置快速的把系统需求植入到必要的业务需求的功能中去
两种:
一种是xml文件
另一种是注解(Commont Aspect)
56.SpringMVC的执行过程是什么?
同54
57.说说SpringMVC中的常用注解有哪些,有什么作用?
@Override(方法重写) @RequestMapping(定义访问路径) @Controller(请求访问的控制器类) @PathVariable(定义在方法上获取请求url上的参数数值) @RequestParam(定义在方法上获取key=value方式传递的参数数据)
58.什么是spring boot?
spring boot是一个全新的框架,是用来简化Spring应用的创建、运行、调试、部署
59.spring boot自动配置原理
@springbootapplication
在pom文件中配置依赖的父项目【spring‐boot‐starter‐parent】
配置启动器【spring‐boot‐starter】
60.spring boot核心配置文件是什么?
@springbootapplication
在pom文件中配置依赖的父项目【spring‐boot‐starter‐parent】
配置启动器【spring‐boot‐starter】
61.spring boot常用的启动器有哪些,干什么用的?
spring‐boot‐starter-web web模块运行所要的依赖
spring‐boot‐starter-aop aop运行所要的依赖
spring‐boot‐starter-jdbc jdbc运行所要的依赖
62.什么是spring cloud?
是一种给基于springboot微服务的优于dubbo的分布式框架
63.Spring Boot、Spring MVC和Spring 有什么区别?
SpringMVC是spring内部的处理web页面的框架
Springboot是一种为了简化Spring的新型框架
64.Dubbo是什么? RPC是什么?
Dubbo是一种分布式框架,用于减少业务层之间的耦合
RPC是远程过程调用
65.Rides是什么,说说你对Rides的认识?
Redis是一种key-value类型的数据库
既可以用作高速缓存,也可以把数据持久化到磁盘上
因为系统的缓存太小,如果要使用更大的缓存可以使用Redis
66.Spring Data Redis中的常见消息类型有哪些,以及操作这些类型的常用方法
String:表示的是一个可变的字节数组,我们初始化字符串的内容、可以拿到字符串的长度,可以获取string的子串,可以覆盖string的子串内容,可以追加子串。
List:Redis将列表数据结构命名为list而不是array,是因为列表的存储结构用的是链表而不是数组,而且链表还是双向链表。因为它是链表,所以随机定位性能较弱,首尾插入删除性能较优
Hash:哈希等价于Java语言的HashMap或者是Python语言的dict,在实现结构上它使用二维结构,第一维是数组,第二维是链表,hash的内容key和value存放在链表中,数组里存放的是链表的头指针
Set:Java程序员都知道HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值。
Zset: zset内部的排序功能是通过「跳跃列表」数据结构来实现的
67.Spring Data Solr是什么,说说他的操作原理。
一款开源搜索平台。
不仅限于搜索,Solr也可用于储存目的。像其他NoSQL数据库一样,它是一种非关系数据储存和处理技术
在pom文件中添加依赖
配置文件中配置
使用注解声明
68.Spring security是什么,说说他的执行原理。
Spring 项目组中用来提供安全认证服务的框架
添加依赖
创建html页面
69.常见的消息中间有哪些,ActiveMQ 发送消息的原理?
ActiveMQ RabbitMQ ZeroMQ kafka
分为两种:一种是点对点,一个生产者对应一个消费者
另一种是一对多,发布/订阅,一个生产者发布消息之后,可以由多个消费者订阅这个消息
70.Nginx服务器的特点有哪些?
1.动静分离
2.负载均衡
3.反向代理
4.单点故障
5.优化
71.介绍一下你简历中最熟悉的一一个项目?

72.在完成这个项目的时候你使用了哪些主要的技术?
73.在完成这个项目的过程中你得到了哪些?.
74.你在项目开发的过程中是是怎么调优的?
程序调优:能单例就单例可以节省内存、@supperswarings消除警告信息、尽量减少new对象
Sql调优:减少使用模糊查询、不用select*、all用in代替、避免使用不等于、大于小于、泛型
75.说说你们公司开发软件的具体流程是什么样的?
76.如何进行SQL调优?
77.你们公司开发软件的时候有哪些文件?
78.Dubbo里面有哪几种节点角色?
5种
Registry注册服务中心
Consumer 服务消费方
Provider 服务提供方
Container 服务运行容器
Moniter 监控中心
79.介绍项目?

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值