1.以下代码的运行结果是
public static void main(String[] args) {
ArrayList<Integer> integers = new ArrayList<Integer>() ;
integers.add(2);
integers.add(4);
integers.add(1);
integers.add(3);
integers.add(5);
for (int i = 0; i <integers.size() ; i++) {
if (integers.get(i)%2==0){
integers.remove(integers.get(i));
}
}
System.out.println(integers);
}
不是1,3,5 是4,1,3,5(当第一个2被移除后,4会第一个,不会被比较移除。惊喜意外...)
2.求运行结果
public class Demo {
class Super {
int flag=1;
Super(){
test();//2步,此处调用了一个test(),虽然子类和父类中都有test()但是会优先调用子类
}
void test(){
System.out.println("Super.test() flag="+flag);
}
}
class Sub extends Super{
Sub(int i){//4步,3执行完后调用子类构造器
flag=i;
System.out.println("Sub.sub() flag="+flag);
}
void test() {//3步
System.out.println("Sub.test() flag="+flag);
}
}
public static void main(String[] args) {
new Demo().new Sub(5);//1步,new的子类,但是子类继承了父类,
//会先访问父类的无参构造方法
}
}
Sub.test() flag=1
Sub.sub() flag=5
3.java体系结构包括四个方面:
java程序设计语言
java class文件格式
java API
java 虚拟机
4.下列哪些语法结构是正确的
public class Demo extends B implements A
public class Demo implements A,B
5.下面哪些情况可以引发异常
A.数组越界
B.指定url不存在
C.使用throw语句抛出
D.使用throw语句
ABC
6.面向对象优点
1、易维护
采用[面向对象思想](https://www.baidu.com/s?wd=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%9D%E6%83%B3&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
7.下列哪些方法可以获取cookis
A.request.getAttribute
B.request.getHeader
C.request.getParameter
D.request.getCookies
A. request.getAttribute:getAttribute是在服务器端的操作。
比如说 request.setAttribute(k,v),其行为动作在服务器端。
而在服务端放入cookies是通过response.addCookie(cookie)。因此,A错了
B. Accept 浏览器可接受的MIME类型
Accept-Charset 浏览器支持的字符编码
Accept-Encoding 浏览器知道如何解码的数据编码类型(如 gzip)。Servlets 可以预先检查浏览器是否支持gzip并可以对支持gzip的浏览器返回gzipped的HTML页面,并设置Content-Encoding回应头(response header)来指出发送的内容是已经gzipped的。在大多数情况下,这样做可以加快网页下载的速度。
Accept-Language 浏览器指定的语言,当Server支持多语种时起作用。
Authorization 认证信息,一般是对服务器发出的WWW-Authenticate头的回应。
Connection 是否使用持续连接。如果servlet发现这个字段的值是Keep-Alive,或者由发出请求的命令行发现浏览器支持 HTTP 1.1 (持续连接是它的默认选项),使用持续连接可以使保护很多小文件的页面的下载时间减少。
Content-Length (使用POST方法提交时,传递数据的字节数)
Cookie (很重要的一个Header,用来进行和Cookie有关的操作,详细的信息将在后面的教程中介绍)
Host (主机和端口)
If-Modified-Since (只返回比指定日期新的文档,如果没有,将会反回304 "Not Modified")
Referer (URL)
User-Agent (客户端的类型,一般用来区分不同的浏览器)
C.request.getParameter()方法获取从客户端中通过get 或者post方式传送到服务器端的参数。行为操作在服务器端。所以cookies明显不是通过url或者form表单提交过来的。C错
D.看方法名字就行了。
BD
8.下列错误的是
A.一个类可以有多个基类和多个基接口
B.抽象类自身可以定义成员而接口不可以
C.抽象类和接口都不能被实例化
D.类不可以多重继承而接口可以
C抽象类是可以实例化的,接口不可以
9.有关线程说法正确的是( )
A线程是程序的多个顺序的流动态执行
B 线程有自己独立的地址空间
C 线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
D 线程是系统进行资源分配和调度的一个独立单位
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是操作系统进行资源分配和调度的一个独立单位;
线程是进程的一个实体,一个进程中包含多个线程。是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位
B进程有独立的地址空间,线程没有。线程是共享进程的地址空间,因此B错误
D进程是 操作系统进行资源分配和调度的一个独立单位,而线程只是CPU调度和分派的基本单位,因此D错误
AC
10.下面关于数据库唯一索引正确的是( )?
A.表可以包含多个唯一约束,但只能有一个主键
B.唯一约束列可以包含null值
C.唯一约束列可修改和更新
D.唯一约束不能用来定义外键
正确答案:A B C
11.Redis支持五种数据类型:
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
12关于OutOfMemoryError,下面说法正确的是()?
A.java.lang.OutOfMemoryError: PermGen space 增加-XX:MaxPermSize这个参数的值的话,这个问题通常会得到解决。
B.java.lang.OutOfMemoryError: Requested array size exceeds VM limit当你正准备创建一个超过虚拟机允许的大小的数组时,这条错误将会出现
C.java.lang.OutOfMemoryError: Java heap space 一般情况下解决这个问题最快的方法就是通过-Xmx参数来增加堆的大小
D.java.lang.OutOfMemoryError: nativeGetNewTLA这个异常只有在jRockit虚拟机时才会碰到
ABC
13.写两个线程,一个线程打印1 ~ 52,另一个线程打印A ~ Z,打印顺序是
12A34B....5152Z
package www.java.test;
class Print{
int flag = 1;
int count = 1;
public synchronized void printNum(){
while(flag != 1){
//此时应该打印字母,让打印数字线程等待
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//打印数字
System.out.print(2*count - 1);
System.out.print(2*count);
flag = 2;
notify();
}
public synchronized void printChar(){
while(flag != 2){
//此时应该打印数字,字母打印线程等待
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print((char)(count-1 + 'A'));
//继续前行
count++;
flag = 1;
notify();
}
}
public class Test{
public static void main(String[] args) {
Print print = new Print();
new Thread(()->{
for(int i = 0; i < 26; i++){
print.printNum();
}
}).start();
new Thread(()->{
for(int i = 0; i < 26; i++){
print.printChar();
}
}).start();
}
}
网友评论