0%

整理面试

[TOC]

  1. public protected default private

本类、包内、包外子类、包外非子类

  1. hashmap

    • hashmap 和 treemap
    • hashmap 和 hashtable
    • concurrenthashmap:
  2. wait()和notify()
    用于线程间通信。举例,生产者和消费者的问题。

  3. 异常分类

    • runtime异常:程序异常(访问越界,空指针等)。
    • io异常:程序本身没有问题。
  4. IO类设计模式

    • 装饰器模式
    • 适配器模式
  5. 从文本中读取的数值型字符串转成数值型

  6. 串行化(序列化)

    • 实现 serializable 接口。
    • serializable仅是一个关键字。
    • 编写read和write方法(FileInputStream,ObjectInputStream,readObject),对象的属性也需要递归支持序列化。
    • 序列化会忽略静态字段的。
    • 序列化用于远程方法调用。
  7. transient关键字

使被transient标识的属性不被序列化。

  1. 反射机制

只要给定类的名字,就可以通过反射机制获得类的所有信息。
优点:利于程序的扩展。根据配置文件,动态创建使用一个类。

  1. 哪里用到反射

jdbc的Class.forName(“”)。spring的IOC,mybaits等。

  1. ArrayList、Vector、LinkedList的区别

    • ArrayList:非线程安全,能序列化,默认容量10
    • Vector:线程安全,不能序列化,默认容量10,
    • LinkedList:插入、删除快;查询慢
  2. stringBuffer 和 StringBuilder

    • stringBuffer:线程安全
    • StringBuilder:不安全。
  3. 多态和重载区别

重载是多态的一部分。

  1. java的堆栈

    • 堆内存:用于存放由new创建的对象和数组。无效变量有gc回收
    • 栈内存:一些基本类型的变量和对象的引用变量。
  2. 栈和队列

  1. 信号量
  1. spring 如何配置bean
  1. Spring中如何延迟加载一个对象
  1. 典型的一个Java Web目录结构如何?
  1. cookie 和 session

补偿http的无状态缺点。

+ cookie: 用于在客户端保存用户数据(实现用户自动登录、用户个性化数据),数据不安全。保存的是字符串。
    * 持久性cookie,存于硬盘中,用于浏览器窗口数据共享。
    * 会话cookie,存于浏览器内存中,生命周期为浏览器窗口打开到关闭的期间
+ session:用于在服务器端保存一定时间(一般默认为20分钟)的用户数据,影响服务器性能。保存的是对象。以JSESSIONID形式存放在cookie中。
  1. cookie 禁用时的情况

    • url重写。
    • 表单隐藏字段
  2. get和post

    • get用于请求信息资源。
    • post用于更新服务器端相应的数据信息。
  3. 线程和进程

    • 一个仅程至少有一个线程。
    • 一个进程中的多个线程共享内存,进程之间是相互独立的内存单元。
  4. 垃圾回收

垃圾回收主要作用于java堆中,hotspot分新生代、老年代、持久区。

  1. sleep和wait

    • sleep:Thread类的方法,不释放锁。占着CPU,不工作。
    • wait:对象的方法,释放锁,一般与notifyAll使用。不占用CPU
  2. 二叉平衡树,满二叉树

  3. NIO和IO

    • io 面向流、阻塞io
    • Nio 面向缓存、非阻塞io
  4. 单例模式

双重校验模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Singleton{
private static Singleton single;
private Singleton(){}
public static Singleton getInstance(){
if(single == null){
synchronized(Singleton.Class){
if(single == null){
sinle = new Singleton();
}
}
}
return single;
}
}
  1. springMVC 请求流程

用户请求–>dispatcherServlet–>handlemapping–>对应controller–>视图解析器–>浏览器

  1. IOC原理

作用:解耦,将对象交给容器管理,程序员只需要配置bean.xml即可。

springIOC最底层的功能就是利用反射机制将配置文件实例化为对象。

步骤:

1. 加载配置文件
2. 解析配置文件
3. 装配配置文件:将配置文件信息解析到BeanDefinition中
4. 后处理
5. 实例化
6. 依赖装配
  1. AOP

面向切面编程,是对oop的补充,可以将(日志、持久性、事务)作为每个方法的公共执行代码。

主要有两大类:动态代理和静态植入。

  1. spring上下文
  1. spring配置非单例

scope = “prototype”

  1. spring bean的生命周期

    1. 容器查找bean并实例化
    2. 设置bean的属性值
    3. 设置 Bean Name
    4. 设置beanFactory
    5. 预初始化
    6. 初始化
    7. 后初始化
    8. 可以使用
    9. 销毁

Spring框架提供了以下四种方式来管理bean的生命周期事件:

+ InitializingBean和DisposableBean回调接口
+ 针对特殊行为的其他Aware接口
+ Bean配置文件中的Custom init()方法和destroy()方法
+ @PostConstruct和@PreDestroy注解方式
  1. beanFactory和ApplicationContext

beanFactory是bean集合的工厂类,bean的实例化、属性填充、实例间的相互依赖等等都是有beanfactory处理的。

ApplicationContext是beanfactory的子类,添加了国际化支持,统一资源文件的访问等功能。

其的子类有:

  • ClassPathXmlApplicationContext
  • FileSystemXmlApplicationContext
  • XmlWebApplicationContext
  1. hash索引和b-tree索引

    • hash索引可以一次查询到数据。但仅能用于 “=” “in” “<=>”,不能范围查询。
    • b-tree索引最常用的索引。
  2. 线程池

  • 提交一个任务
  • 判断