每日一题
1.volatile修饰的user对象,里面有两个属性,int a=1和int b=2.(注意:a,b没有被volatile修饰) 这个user对象是另外一个对象Tasker的成员变量。然后tasker对象已经在程序中运行起来了(一个线程运行,我们叫A线程吧)。紧接着又有另外一个线程(B线程)修改了user对象里的a属性,把1修改成了3;那么请问,A线程能否第一时间感知到a属性发生变化呢,也就是知道他变成了3。
答:线程副本里面保存的是对象,所以是知道的(忘记老师答得还是同学答的了,大家知道的,麻烦在群里解答一下。)
2.一个线程池里面有N个线程,并发下执行某一段逻辑(这段逻辑执行的时间很短,大概1-5ms最多),加锁的方式运行,使用哪一种锁性能最高,
a.公平锁;
b.非公平锁;
c.自旋锁;
d.synchronized锁
答:a 公平锁
3.现在我有一个1g的大文件,如何快速的从中间读取10个字节内容,比如我就是想从1g的文件中读取中间
我就是512m往后的10个字节,用什么方式来做
答:RandomAccessFile
4.现在我有9个int类型组成一个数组,2,2,6,6,5,8,8,1,1
如何用最快的方式找出唯一的一个5
答:亦或算法
5.TCP通信里,如何做到,同一个端口运行多个应用程序,而不报