[TOC]
- public protected default private
本类、包内、包外子类、包外非子类
hashmap
wait()和notify()
用于线程间通信。举例,生产者和消费者的问题。异常分类
- runtime异常:程序异常(访问越界,空指针等)。
- io异常:程序本身没有问题。
IO类设计模式
- 装饰器模式
- 适配器模式
从文本中读取的数值型字符串转成数值型
串行化(序列化)
- 实现 serializable 接口。
- serializable仅是一个关键字。
- 编写read和write方法(FileInputStream,ObjectInputStream,readObject),对象的属性也需要递归支持序列化。
- 序列化会忽略静态字段的。
- 序列化用于远程方法调用。
transient关键字
使被transient标识的属性不被序列化。
- 反射机制
只要给定类的名字,就可以通过反射机制获得类的所有信息。
优点:利于程序的扩展。根据配置文件,动态创建使用一个类。
- 哪里用到反射
jdbc的Class.forName(“”)。spring的IOC,mybaits等。
ArrayList、Vector、LinkedList的区别
- ArrayList:非线程安全,能序列化,默认容量10
- Vector:线程安全,不能序列化,默认容量10,
- LinkedList:插入、删除快;查询慢
stringBuffer 和 StringBuilder
- stringBuffer:线程安全
- StringBuilder:不安全。
多态和重载区别
重载是多态的一部分。
java的堆栈
- 堆内存:用于存放由new创建的对象和数组。无效变量有gc回收
- 栈内存:一些基本类型的变量和对象的引用变量。
栈和队列
- 信号量
- spring 如何配置bean
- Spring中如何延迟加载一个对象
- 典型的一个Java Web目录结构如何?
- cookie 和 session
补偿http的无状态缺点。
+ cookie: 用于在客户端保存用户数据(实现用户自动登录、用户个性化数据),数据不安全。保存的是字符串。
* 持久性cookie,存于硬盘中,用于浏览器窗口数据共享。
* 会话cookie,存于浏览器内存中,生命周期为浏览器窗口打开到关闭的期间
+ session:用于在服务器端保存一定时间(一般默认为20分钟)的用户数据,影响服务器性能。保存的是对象。以JSESSIONID形式存放在cookie中。
cookie 禁用时的情况
- url重写。
- 表单隐藏字段
get和post
- get用于请求信息资源。
- post用于更新服务器端相应的数据信息。
线程和进程
- 一个仅程至少有一个线程。
- 一个进程中的多个线程共享内存,进程之间是相互独立的内存单元。
垃圾回收
垃圾回收主要作用于java堆中,hotspot分新生代、老年代、持久区。
sleep和wait
- sleep:Thread类的方法,不释放锁。占着CPU,不工作。
- wait:对象的方法,释放锁,一般与notifyAll使用。不占用CPU
二叉平衡树,满二叉树
NIO和IO
- io 面向流、阻塞io
- Nio 面向缓存、非阻塞io
单例模式
双重校验模式
1 | public class Singleton{ |
- springMVC 请求流程
用户请求–>dispatcherServlet–>handlemapping–>对应controller–>视图解析器–>浏览器
- IOC原理
作用:解耦,将对象交给容器管理,程序员只需要配置bean.xml即可。
springIOC最底层的功能就是利用反射机制将配置文件实例化为对象。
步骤:
1. 加载配置文件
2. 解析配置文件
3. 装配配置文件:将配置文件信息解析到BeanDefinition中
4. 后处理
5. 实例化
6. 依赖装配
- AOP
面向切面编程,是对oop的补充,可以将(日志、持久性、事务)作为每个方法的公共执行代码。
主要有两大类:动态代理和静态植入。
- spring上下文
- spring配置非单例
scope = “prototype”
spring bean的生命周期
- 容器查找bean并实例化
- 设置bean的属性值
- 设置 Bean Name
- 设置beanFactory
- 预初始化
- 初始化
- 后初始化
- 可以使用
- 销毁
Spring框架提供了以下四种方式来管理bean的生命周期事件:
+ InitializingBean和DisposableBean回调接口
+ 针对特殊行为的其他Aware接口
+ Bean配置文件中的Custom init()方法和destroy()方法
+ @PostConstruct和@PreDestroy注解方式
- beanFactory和ApplicationContext
beanFactory是bean集合的工厂类,bean的实例化、属性填充、实例间的相互依赖等等都是有beanfactory处理的。
ApplicationContext是beanfactory的子类,添加了国际化支持,统一资源文件的访问等功能。
其的子类有:
- ClassPathXmlApplicationContext
- FileSystemXmlApplicationContext
- XmlWebApplicationContext
hash索引和b-tree索引
- hash索引可以一次查询到数据。但仅能用于 “=” “in” “<=>”,不能范围查询。
- b-tree索引最常用的索引。
线程池
- 提交一个任务
- 判断