面试准备01

面试准备01

JavaSE

面向对象的特征

封装:是指把对象的属性进行私有化,同时提供方法供外界调用

继承:是使用已存在的类作为基础建立新的类,新的类继承父类的所有属性和方法,也可以添加新的属性和方法,优点是提高代码重用、提高程序维护性、提高开发效率

多态:在程序运行时才决定引用变量是哪个具体类,实现方式有继承和接口

集合容器

整体关系结构

在这里插入图片描述

List, Set, Queue, Map 四者区别
  • List:有序的、可重复的。
  • Set:无序的、不可重复的。
  • Queue:队列,有序的、可重复的。
  • Map:使用键值对(key-value)存储,key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。
List的实现类
  • ArraylistObject[] 数组,线程不安全
  • VectorObject[] 数组,线程安全
  • LinkedList: 双向链表,线程不安全
Set的实现类
  • HashSet:无序的,唯一的,底层使用HashMap保存元素
  • LinkedHashSet:是HashSet的子类,通过LinkedHashMap实现
  • TreeSet:有序的,唯一的,就是红黑树,不允许null
Queue的实现类
  • PriorityQueue:Object[]数组实现二叉堆
  • ArrayQueue:Object[]数组+双指针
Map的实现类
  • HashMap:数组+链表+红黑树
  • LinkedHashMap:继承自HashMap,增加了双向链表
  • HashTable:数组+链表,线程安全,效率低
  • TreeMap:红黑树

Thread多线程

进程与线程

进程:是程序的一次执行过程,是系统运行程序的基本单位,进程与进程不共享资源,较耗费资源

线程:是比进程更小的执行单位,多个线程共享进程的堆和方法区,有自己的程序计数器、虚拟机栈和本地方法栈,耗费资源少

线程的创建方式
  • 继承Thread类,重写run方法,start方法启动
  • 实现Runnable接口,重写run方法,start方法启动
  • 实现Callable接口,实现call方法,使用FutureTask类来包装Callable对象,使用FutureTask对象作为Thread对象的target创建并启动新线程,调用FutureTask对象的get()方法来获得子线程执行结束后的返回值
  • 通过线程池创建
线程的安全问题
synchronized关键字

synchronized关键字可以保证修饰的方法或代码块儿在任意时刻只能有一个线程执行

可以修饰示例方法、静态方法、代码块

Lock

Lock是实现手动上锁的类,使用步骤:创建锁、加锁、解锁

ThreadLocal

ThreadLocal变量可以存储当前线程的一些数据

线程池
使用线程池的优点
  • 降低资源消耗
  • 提高响应速度
  • 提高线程的可管理性
创建线程池的方式
  • 通过构造方法实现,ThreadPoolExecutor
  • 通过工具类Ececutors的静态方法
JDBC连接池

Druid连接池、c3p0等

IO流

整体结构

在这里插入图片描述

常用API类

LocalDate、LocalDateTime、Date、String、StringBuffer(线程安全效率低)、StringBuilder(线程不安全效率高)、Object、Math、File、Enum、Pattern、Collections、

异常

异常分类

在这里插入图片描述

常见运行时异常

空指针异常、数组下边越界异常、类型转换异常、参数异常、算术异常、类找不到异常、方法找不到异常、连接异常

http状态码

分为五类

1xx(消息)、2xx(成功)、3xx(重定向)、4xx(请求错误)、5xx(服务器错误)

常见

200:正常

304:重定向

401:协议格式出错

403:没有权限

404:未找到资源

500:服务器程序错误

503:服务器繁忙

常用设计模式

单例模式

保证一个类只有一个实例

Spring中bean的默认作用域是单例的

工厂模式

将目的将创建对象的具体过程屏蔽隔离起来
简单工厂 : 根据传入原料,加工不同的产品
工厂方法: 不同的产品需要创建不同的具体工厂
抽象工厂: 不同的产品创建不同的工厂的同时,工厂可以生产某个产品需要的组件。

spring中创建bean对象的工厂

代理模式

隐藏对已有功能访问,客户端通过代理对象的访问,完成对于已有功能的访问

静态代理:需要创建抽象接口、目标类、代理类,目标类和代理类实现同一个接口

动态代理:在内存中产生虚拟的代理类和代理类的实例

jdk的动态代理:产生虚拟的目标类接口的实现类,从而产生代理对象

cglib的动态代理:产生目标类虚拟的子类,从而产生代理对象

spring的aop和springMVC的拦截器通过动态代理实现

装饰模式

类似于代理模式,都是实现对原有功能的扩展增强

java的io流使用了装饰模式

适配器模式

将已有的数据转化为用户希望的格式

springMVC中处理器的适配器,就是将Controller中方法的返回值统一转换为ModelAndView

JavaEE

jsp的内置对象

request:请求对象,存储客户端向服务端发送的请求信息

response:响应对象

session:会话对象

application:全局对象

page:当前jsp页面对象

pageContext:页面容器对象

out:负责向客户端输入内容

config;配置对象

请求转发、请求包含、重定向

请求转发是把请求从一个servlet转发到另一个servlet,由另一个servlet处理请求并返回,forward

请求包含是一个servlet使用了另一个servlet,请求和另一个servlet不产生直接关系,include

重定向是指servlet返回给浏览器一个新的目标地址,让浏览器访问新的地址,redirect

servlet中文乱码

手动指定相应格式与字符集

response.setHeader("Content-Type", "text/html;charset=utf-8");

servlet的生命周期

init:初始化,servlet对象创建时执行,最初执行且只执行一次

service:处理请求,客户端发送几次请求就会被调用几次

destroy:销毁,servlet对象销毁前调用,最后执行且只执行一次

cookie与session

cookie是存储在浏览器的数据,浏览器发起请求时会带着cookie

session是存储在服务器内存的,主要是为了同一浏览器多次访问时共享数据

第一次访问时创建,超时自动销毁,也可以手动销毁

过滤器

javaWeb三大组件之一(servlet、filter、listener)

在请求到来后servlet接收前执行

可以实现登录访问限制、编码处理等功能

监听器

监听器属于观察者模式

实现

创建监听器:实现接口,重写方法

注册监听器:贾昂监听器与事件源绑定

执行监听器:自动执行

八大监听器

事件源是三大域:ServletContext、HttpSession、ServletRequest

三大域各有生命监听器和属性监听器,还有两个session感知监听器

ajax

Ajax 的核心是 XMLHttpRequest 对象,并使用该对象的open和send方法发送请求,默认是异步的

jquery中使用load方法加载数据,常用 . g e t 和 .get和 .get.post

ajax常用来发送异步请求,实现页面的局部刷新

跨域解决方法:

  1. 相应头信息中加入Access-Control-Allow-Origin,注解@CrossOrigin
  2. 利用script可以跨域的特点,常使用ajax跨域,数据类型为jsonp

反射

Class clz = Class.forName("java.lang.String"); //获取类
Apple apple = (Apple)clz.newInstance(); //实例化
Constructor constructor = clz.getConstructor(); //实例化2
Apple apple = (Apple)constructor.newInstance();
Field[] fields = clz.getFields(); //获取方法
Field[] fields = clz.getDeclaredFields(); //获取属性
name.setAccessible(true); //取消范围修饰符检查

xml解析

导包使用

mysql事务隔离

acid,原子、一致、隔离、持久

读未提交、读已提交、可重复读(默认)、可串行化

在这里插入图片描述

jdbc

JAVA语言用于访问数据库的api

使用步骤:载入驱动、定义连接、建立连接、创建statement对象、执行查询或更新、结果处理、关闭连接

事务:手动setAutoCommit设置为false开启事务,commit提交

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值