DAY 21
选择题
-
以下关于构造函数的描述错误的是?
A:每个类有且只能有一个构造函数。
B:构造函数是类的一种特殊函数,它的方法名必须与类名相同
C:构造函数的主要作用是完成对类的对象的初始化工作
D:一般在创建新对象时,系统会自动调用构造函数
答:A
解析:
构造函数有无参构造函数、有参构造函数,并且支持方法重载。 -
为Test类的一个无形式参数无返回值的方法method书写方法头,使得使用类名Test作为前缀就可以调用它,该方法头的形式为?
A:static void method()
B:public void method
C:protected void method()
D:abstract void method()
答:A
解析:
static 修饰的方法可以使用类名直接调用。 -
已知有下列Test类的说明,在该类的main方法的横线处,则下列哪个语句是正确的?
A:t.f = 1;
B:this.n = 1;
C:Test.m = 1;
D:Test.f = 1;
public class Test
{
private float f = 1.0f;
int m = 12;
static int n = 1;
public static void main (String args[])
{
Test t = new Test();
————————
}
}
答:A
解析:
static 修饰的方法中不能使用 this;static 修饰的属性和方法可以直接使用类名调用。
- 有如下代码:请写出程序的输出结果?
A:432
B:531
C:421
D:523
public class Test
{
public static void main(String[] args)
{
int x = 0;
int y = 0;
int k = 0;
for (int z = 0; z < 5; z++) {
if ((++x > 2) && (++y > 2) && (k++ > 2))
{
x++;
++y;
k++;
}
}
System.out.println(x + ”” +y + ”” +k);
}
}
答:B
解析:
没什么说的
z x y z
0 1 0 0
1 2 0 0
2 3 1 0
3 4 2 0
4 5 3 1
-
下面有关JSP内置对象的描述,说法错误的是?
A:session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止
B:request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应
C:application对象:多个application对象实现了用户间数据的共享,可存放全局变量
D:response对象:response对象包含了响应客户请求的有关信息
答:C
解析:
application对象是共享的,多个用户共享一个,以此实现数据共享和通信。 -
try块后必须有catch块。
答:错误
解析:
try-catch
try-finally
try-catch-finally
但catch和finally语句不能同时省略! -
下面代码输出结果是?
A:Compilation error because”~”doesn’t operate on integers
B:-5
C:-6
D:15
int i = 5;
int j = 10;
System.out.println(i + ~j);
答:C
解析:
公式-n=n+1可推出n=-n-1,所以~10=-11再加5结果为-6。
-
已知x >= y and y >= z 为真,那么x > z or y = z 值为?
A:真
B:假
C:无法确定
D:x y z 同为正数时为真
解析:
y = z 的结果取决于 z ,所以不能确定 -
当x=?时,会输出”Test2“?
A:0
B:1
C:2
D:3
E:4
switch (x)
{
case 1: System.out.println("Test1");
case 2:
case 3:
System.out.println("Test2");
break;
default:
System.out.println("Test3");
break;
}
答:BCD
解析:
这种题是真讨厌,题目又不说清楚!
该题考查 switch 语句,因为 1 2 语句后都没有 break,所以1 2 3 都可以输出 “Test2” 。
- 在使用super和this关键字时,以下描述错误的是?
A:在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B:super()和this()不一定要放在构造方法内第一行
C:this()和super()可以同时出现在一个构造函数中
D:this()和super()可以在static环境中使用,包括static方法和static语句块。
答:BCD
解析:
super和this都只能位于构造器的第一行,而且不能同时使用,这是因为会造成初始化两次,this用于调用重载的构造器,super用于调用父类被子类重写的方法。
编程题
leetcode 136
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例:
输入: [4,1,2,1,2]
输出: 4
分析:
暴力解法太慢,我们可以下一下位运算中的异或运算。
· 任何数和 0 异或结果仍是原数;
· 任何数和其自身异或,结果为 0;
· 异或运算满足交换律结合律。
由这些特性可知,给定的数组中的数依次做异或运算,就可以得出单出来的数字。
代码:
class Solution {
public int singleNumber(int[] nums) {
int res = 0;
for (int n : nums) {
res ^= n;
}
return res;
}
}
DAY 22
选择题
-
若所用变量都已正确定义,以下选项中,非法的表达式是?
A:a!= 4||b==1
B:’a’ % 3
C:’a’ = 1/3
D:’A’ + 32
答:C
解析:
’a’ 是 char 类型的一个值,不能为其赋值。 -
为了将包ch4导入到当前程序,可以使用的语句是?
A:import ch4.* ;
B:package ch4.*;
C:ch4 import;
D:ch4 package;
答:A
解析:
没啥说的,无语。 -
下列语句哪一个是不正确的?
A:Log4j支持按分钟为间隔生成新的日志文件
B:Log4j是一个打印日志用的组件
C:Log4j支持按年为间隔生成新的日志文件
D:Log4j的日志打印级别可以在运行时重新设置
答:D
解析:
暂无 -
ArrayList和Vector主要区别是什么?
A:Vector与ArrayList一样,也是通过数组实现的,不同的是Vector支持线程的同步
B:Vector与ArrayList一样,也是通过数组实现的,不同的是ArrayList支持线程的同步
C:Vector是通过链表结构存储数据,ArrayList是通过数组存储数据
D:上述说法都不正确
答:A
解析:
Vector 支持线程同步,但是效率低,因此引入不安全的 Arraylist 。 -
从以下四个选项选出不同的一个?
A:LVS
B:Nginx
C:Lighttpd
D:Apache
答:A
解析:
A 为 Linux 虚拟服务器。 -
下面哪种情况会导致持久区jvm堆内存溢出?
A:循环上万次的字符串处理
B:在一段代码内申请上百M甚至上G的内存
C:使用CGLib技术直接操作字节码运行,生成大量的动态类
D:不断创建对象
答:C
解析:
暂无 -
以下哪个式子有可能在某个进制下成立?
A:1314=204
B:1234=568
C:14*14=140
D:1+1=3
答:A
解析:
可以根据十进制转其他进制的特点,列出方程求解。 -
已知String a=“a”,String b=“b”,String c=a+b,String d=new String(“ab”) 以下操作结果为true的是?
A:(a+b).equals©
B:a+bc
C:cd
D:c.equals(d)
答:AD
解析:
== 比较基本数据类型的时候,比较的是值,用于比较引用数据类型的时候比较的是引用指向的地址。
equals 比较的类型中如果重写了该方法,比较的是对象的内容,如果没有重写,则继承的 Object 类中的 equals 方法,底层还是 = = -
在Java线程状态转换时,下列转换不可能发生的有?
A:初始态->运行态
B:就绪态->运行态
C:阻塞态->运行态
D:运行态->就绪态
答:AC
解析:
(借用牛客大佬的图)
-
实现或继承了Collection接口的是?
A:Map
B:List
C:Vector
D:Iterator
E:Set
答:BCE
解析:
(借用牛客大佬的图)
编程题
leetcode 121
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
分析:
方法一:可以使用暴力解法,在买入比卖出时价格小的条件下,从数组中所有元素可以组成的差值中找出最大的差值即可。不写代码了。
方法二:设置最小值、最大值,遍历数组,判断当前元素是否小于最小值,如果小于则将当前元素存入最小值(该最小值存的是历史最小值),如果不小于,则判断当前元素和历史最小值的差值是否大于最大值,如果大于,则记录将该差值存入最大值(历史最大值)。最后返回该最大值即可。
代码:
class Solution {
public int maxProfit(int[] prices) {
int min = Integer.MAX_VALUE;
int max = 0;
for (int i = 0; i < prices.length; i++) {
if (prices[i] < min) {
min = prices[i];
} else if (prices[i] - min > max) {
max = prices[i] - min;
}
}
return max;
}
}