刷题day-10

1、有10颗糖,如果每天至少吃一颗(多不限),吃完为止,问有多少种不同的吃法?
采用隔板法,如果1天吃完就是C9 0,如果2天吃完就是C9 1,3–C9 2,4–C9 3,`````````````9–C9 8,10–C9 9.
所以共C 9 0+C 9 1+C 9 2+C 9 3+C 9 4+···+C9 9=512 所以是C
另外,可以这么想,共有9个空,每个空都有两中选择,放入隔板和不放隔板。所以共有种类是2的9次方=512
2、将三只蜗牛放在一个正三角形的每个角上.每只蜗牛开始设三角形的一条边朝另一个角做直线运动,目标角是随机选择,那么蜗牛互不相撞的概率是多少?
3只蜗牛不相撞的情况,2种,一种顺时针,一种逆时针,每个蜗牛的爬法2种,往顺时针或者逆时针,为222,所以为2/8为1/4
3、从1,2,3,4,5,6,7,8,9中任意选出三个数,使它们的和为偶数,共有()种不同的选法.
第一种选法:全部是选偶数,那么是从2,4,6,8这四个数字中选取3个,一共有4中选法
第二种选法:选两个奇数一个偶数,奇数是从1,3,5,7,9这五个数字中选取2个,偶数是从2,4,6,8中选一个,一共有C(2,5)C(1,4)=104=40种,
一共是4+40=44种
4、5,6,8,12,12,20,17,30,( )
奇数位:5,8,12,17的间隔依次为3,4,5;偶数位:6,12,20,30的间隔依次为6,8,10,可以推断出原来的序列是列个数列的交叉组合,下一个数位于奇数位置上,与前面的17间隔为6,因此待求得数是23
5、有一个箱子,N把钥匙,只有一把钥匙能打开箱子,现在拿钥匙去看箱子。平均多少次能打开箱子?
1* 1/N + 2* 1/N + N* 1/N = (1+2+…+N)/N = N*(N+1) /2 /N = (N+1)/2
6、我们在程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。()
java规范中包名一般是小写的
类名一般是大写的
System是类名 java.lang.System
out是System的成员
println是方法名
7、下列关于java 中的 wait()方法和 sleep()方法的区别描述错误的是?
这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。

2、 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得敏感词线程可以使用同步控制块或者方法。

sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源敏感词线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待敏感词线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。

3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
8、对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……100的倍数反方向又拨一次开关 ,问:最后为关熄状态的灯有几个。
若一个开关编号为x,那么所有能整除x的数,都会导致开关拨动一次,例如 x = 8时,当每次拨动1,2,4,8的时候,都会导致8号开关拨动一次。
那么只有当能整除x的数为奇数的时候,最后开关才会处于关闭(因为一开始是开着的,经过奇数次拨动就处于关闭)
那么什么样的数才能满足?答案是若x是某个数的平方数的时候。因为 一般情况下,如果 x/a = b, 那么 a,b肯定会作为x的2个因数,所以一般情况下,肯定是成对出现的,只有当a=b的时候,这样才会出现奇数个因数。
9、以下代码执行的结果显示是多少( )?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Demo { class Super{ int flag=1;
Super(){
test();
} void test(){
System.out.println(“Super.test() flag=”+flag);
}
} class Sub extends Super{
Sub(int i){ flag=i;
System.out.println(“Sub.Sub()flag=”+flag);
} void test(){
System.out.println(“Sub.test()flag=”+flag);
}
} public static void main(String[] args) { new Demo().new Sub(5);
}
}
在继承中代码的执行顺序为:1.父类静态对象,父类静态代码块
2.子类静态对象,子类静态代码块
3.父类非静态对象,父类非静态代码块
4.父类构造函数
5.子类非静态对象,子类非静态代码块
6.子类构造函数
对于本题来说:在只想new Sub(5)的时候,父类先初始化了 int flag = 1,然后执行父类的构造函数Super(),父类构造函数中执行的test()方法,因子类是重写了test()方法的,因此父类构造函数中的test()方法实际执行的是子类的test()方法,所以输出为Sub.test() flag=1,接着执行子类构造函数Sub(5) 将flag赋值为5,因此输出结果Sub.Sub() flag=5。
10、下面叙述那个是正确的?()
A.vector是线程安全的ArrayList,在内存中占用连续的空间。初始时有一个初始大小,当数据条数大于这个初始大小后会重写分配一个更大的连续空间。如果Vector定义为保存Object则可以存放任意类型。

B.try{}catch{}会增加额外的开销

C.接口中声明的’变量’必须为public final static,所以为常量

D.子类可以访问父类受保护的成员

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值