最近面试了多家中小型公司后,发现,自己居然有些特别基础的东西还是不了解,今天特地记录一下,如果恰好你也不懂那正好一起补补,QAQ。
第一题
答案已经在图上了,但是你知道这句话错在哪吗,对了,notify方法之后获得该对象锁,进入的是就绪状态 ,详解请看字节大佬讲解Java线程状态转化
第二题
B错在:char类型和int类型相加的结果一定是字符,肯定是不对的,在默认情况下输出的是int类型,下面看一个试验
char c1='A';
int h = 1;
char m1 = 'B';
System.out.println(c1+h);
结果:输出的是66
也就是说,结果未指定类型的情况,默认输出的是码值(ASCII码表对应的值),即int类型.
如果指定了类型,输出的就是那个类型.比如char.
我的总结:
字符参与运算,其实是拿字符对应的码表中的数字进行运算的,
如果本身不是字符,而是int类型或char类型的数字(默认为码值,比如 char a = 10, int a = 10;这里的10都会默认为码值10),则就先转换其他字符对应的码值再计算结果,找到结果对应的字符.如果类型为char型,则输出字符,如果不是,则输出结果码值.
C错在:double是高精度,int是低精度,高—>低,需要强制转化
D:结果一定是String
第三题:
想要做出这道题,你得先了解栈的进栈出栈顺序,先进后出
首先我们来分析A为什么错,如果5都进来了,那是不是1,2,3,4都依次进入了,5,4先出栈没问题,但是1的最先进来的所以,它的最后一个出
分析B为什么是对的,首先1,2先进栈,然后2出栈,3进栈出栈,4进栈出栈,1出栈,5进栈出栈
C为什么是对的,1进栈出栈,然后2,3,4,5依次进栈,然后5,4,3,2依次出栈,没问题
D为什么是对的,1,2进栈,2出栈,3进栈出栈,1出栈,4进栈出栈,5进栈出栈
第四题:
首先我先说为什么D不对吧,抽象方法不允许,有方法体。
C为什么不对,已经存在method方法,如果要重载,不能改变方法的返回值
B为什么不对,不能直接在类中做运算赋值;
第五题,是在博客上看到一个大佬面试别人的一到题,个人觉得很有趣,在自己这记录一下。
题目是 不用反射,能否实现一个方法,调换两个 String 对象的实际值?
String yesA = "a";
String yesB = "b";
//能否实现这个 swap 方法
// 让yesA=b,yesB=a?
swap(yesA, yesB);
答案,是不能的;
原文地址,作者讲的非常详细了,我在这就不多赘述了。
如果文章中,有不对的地方,欢迎大家,多多指出,谢谢.