三分钟解决手撕某上市公司笔试题

今天去参加了一个某个上市公司的笔试,下面的这些题目都是我笔试过后自己回想起来的,现在看看也没觉得有多难。不多说了

甲乙丙丁戊5人各借一本小说,约定读完后相互交换。这5本书的厚度和他们的阅读速度差不多,因此5人总是同时换书。经过数次交换后,5人每个人都读完了这5本书。已知:
甲最后读的是乙读的第二本书
丙最后读的是乙读的第四本书
丙读的第二本书甲在一开始就读了
丁最后读的数是丙读的第三本书
乙读的第四本书是戊读的第三本书
丁第三次读的书丙一开始读的那本书

那么丁第二次读的书是谁先读的?

丁第二次读的书是戊先读的

1、先设定甲乙丙丁戊第一次读的依次是A,B,C,D、E;
2、根据3丙读的第二本书甲在一开始就读了和6丁第三次读的书是丙一开始读的那本书得知(丙,2)=A (丁,3)=C

3、根据“2丙最后读的书是乙读的第四本书”和“5乙读的第四本书是戊读的第三本书”得知(乙,4)=(丙,5)=(戊,3),同时排除了他第1次读的BCE剩下的A,D可选,而(丙,2)=A 即(乙,4)=(丙,5)=(戊,3)=D

4、根据“1甲最后读的乙读的第二本书”得(甲,5)=(乙,2)=C/E ;假设为E,则(丁,2)只能是B,根据“4 丁最后读的书是丙读的第三本书”得(丙,3)=(丁,5),可推翻此假设(具体填图即明白),则(甲,5)=(乙,2)=E

在这里插入图片描述

sleep()和wait()的区别

1、sleep,wait 这两个方法来自不同的类分别是Thread和Object
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
5、sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行。wait是Object的方法,也就是说可以对任意一个对象调用wait方法,调用wait方法将会将调用者的线程挂起,直到其他线程调用同一个对象的notify方法才会重新激活调用者。

写冒泡排序实现:


```java
public static void bubbleSort(int []arr) {
 
        for(int i =1;i<arr.length;i++) { 
            for(int j=0;j<arr.length-i;j++) {
                if(arr[j]>arr[j+1]) {
                    int temp = arr[j];
                     
                    arr[j]=arr[j+1];
                     
                    arr[j+1]=temp;
            }
            }    
        }
    }

发布了32 篇原创文章 · 获赞 9 · 访问量 3136

猜你喜欢

转载自blog.csdn.net/weixin_43501566/article/details/104933935