1,一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
- 可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
2,请说出作用域 public, private, protected,以及不写时的区别

3, 接口是否可继承接口?抽象类是否可实现接口?抽象类是否可继承具体类?抽象类中是否可以有静态的 main 方法?
4, abstract class 和 interface 有什么区别?
- 1.抽象类可以有构造方法,接口中不能有构造方法。
- 2.抽象类中可以有普通成员变量,接口中没有普通成员变量
- 3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的
- 4.抽象类中的抽象方法的访问类型不唯一,但接口中的抽象方法只能是默认的 public 类型
- 5.抽象类中可以包含静态方法,接口中不能包含静态方法
- 6.一个类可以实现多个接口,但只能继承一个抽象类。
5.String s = “Hello”;s = s + " world!";这两行代码执行后,原始的 String对象中的内容到底变了没有?
- 没有
- String 被设计成不可变,也不可继承, 它的所有对象都是不可变对象。在本案例中,s指向变化并不会引起指向对象的改变,也就是说,之前指向的对象还在内存中,只是 s 这个引用变量不再指向它了。
6.String s = new String(“TOM”);创建了几个 String Object?二者之间有什么区别?
- 一个或两个
- ”TOM”对应一个对象,这个对象放在字符串常量缓冲区,常量”TOM”不管出现多少遍,都是缓冲区中的那一个。
- New String 每写一遍,就创建一个新的对象
- 如果以前就用过,就不会创建,直接从缓冲区拿。
7,数组有没有 length()这个方法? String 有没有 length()这个方法?
- 数组没有 length()这个方法,有 length 的属性。 String 有有 length()这个方法。
8,heap 和 stack 有什么区别。
- java 的内存分为两类,一类是栈内存,一类是堆内存。
- 栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。
- 堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用 new
创建的对象都放在堆里,所以,它不会随方法的结束而消失。
- 方法中的局部变量使用 final修饰后,放在堆中,而不是栈中。
9,说一说 Servlet 的生命周期
- Servlet 的生命周期包括加载和实例化、初始化、处理请求以及服务结束。
- Servlet 生命周期 三大方法: init,service 和 destroy
- Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法, service
方法自动派遣运行与请求对应的 doXXX 方法(doGet, doPost)等,当服务器决定将实例
销毁的时候调用其 destroy 方法。
10,Request 对象的常用方法
- setAttribute(String name,Object):设置名字为 name 的 request 的参数值
- getAttribute(String name):返回由 name 指定的属性值
- getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例
- getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组
- getCharacterEncoding():返回请求中的字符编码方式
- getContentLength():返回请求的 Body 的长度
- getHeader(String name):获得 HTTP 协议定义的文件头信息
- getHeaders(String name):返回指定名字的 request Header 的所有值,结果是一个枚举的
实例
- getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例
- getInputStream():返回请求的输入流,用于获得请求中的数据
- getMethod():获得客户端向服务器端传送数据的方法
- getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数值
- getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的
实例
- getParametervalues(String name):获得有 name 指定的参数的所有值
- getRequestURI():获取发出请求字符串的客户端地址
- getRemoteAddr():获取客户端的 IP 地址
- getRemoteHost():获取客户端的名字
- getSession([Boolean create]):返回和请求相关 Session
- getServerName():获取服务器的名字
- getServletPath():获取客户端所请求的脚本文件的路径
- getServerPort():获取服务器的端口号
- removeAttribute(String name):删除请求中的一个属性
11,jsp 有哪些内置对象?作用分别是什么?

12,Java 中的23种设计模式
- Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式)
- Prototype(原始模型模式), Singleton(单例模式), Facade(门面模式)
- Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式)
- Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式)
- Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式)
- Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式)
- Observer(观察者模式), State(状态模式), Strategy(策略模式)
- Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
相关文章: