保捱科技网
您的当前位置:首页记一些题关于java的

记一些题关于java的

来源:保捱科技网

CMS垃圾回收器在那些阶段是没用用户线程参与的

A.初始标记
B.并发标记
C.重新标记
D.并发清理

分析:

用户线程(user-level threads)指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

CMS的GC过程有6个阶段(4个并发,2个暂停其它应用程序)

1. 初次标记(STW initial mark)

2. 并发标记(Concurrent marking)

3. 并发可中断预清理(Concurrent precleaning)

4. 最终重新标记(STW remark)

5. 并发清理(Concurrent sweeping)

6. 并发重置(Concurrent reset)

在初次标记,重新标志的时候,要求我们暂停其它应用程序,那么这两个阶段用户线程是不会参与的


数据库使用读写分离最主要的目的是

A.应对读多写少的场景
B.减少X锁与S锁的竞争
C.及时备份数据
D.水平或垂直拆分数据库

答案是B

分析:

基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁).

X锁:是事务T对数据A加上X锁时,只允许事务T读取和修改数据A

S锁:是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁
若事务T对数据对象A加了S锁,则T就可以对A进行读取,但不能进行更新(S锁因此又称为读锁),在T释放A上的S锁以前,其他事务可以再对A加S锁,但不能加X锁,从而可以读取A,但不能更新A


数组一些操作

下列程序打印结果为(      )
nl = [1,2,5,3,5]
nl.append(4)
nl.insert(0,7)
nl.sort()
print nl

分析:

append()方法是指在列表末尾增加一个数据项。extend()方法是指在列表末尾增加一个数据集合。insert()方法是指在某个特定位置前面增加一个数据项。——nl=[1,2,5,3,5];nl.append(4)得nl=[1,2,5,3,5,4];nl.insert(0,7)得nl=[7,1,2,5,3,5,4];nl.sort()输出[1,2,3,4,5,5,7]


逻辑分析

8瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要()人测试? 

解析:

1.现将实验酒编号为0~7

2.假设有三个人分别为a,b,c,a,b,c分别表示二进制的三位,品尝了一次就记为1

3.如011就表示b和c品尝了酒,然后看二进制哪些人中毒,最后还原十进制,就知道是哪瓶是毒酒了。

          十进制:  0        1        2        3        4        5        6        7

          二进制:000    001    010    011     100    101    110    111   

这道题可以扩展到其他不同的版本,思路很新奇。

看到一位网友的解答,笑喷。他说:举杯邀明月,对影成三人。所以至少要三个人。哈哈!

因篇幅问题不能全部显示,请点此查看更多更全内容