0%

奇奇怪怪的面试题记录

好几次碰到已经刷过的奇怪的题,还是想不起来,所以还是好记性不如烂笔头,都记下来面试之前看一遍好了。

语言特性

不借助中间变量,交换字符串

要用到三次亦或:

1
int a=5555;
2
int b=6666;
3
a^=b;
4
b^=a;
5
a^=b;
6
System.out.println(a+" "+b);

Java不能字符串的亦或操作,用数字表示了,好像c可以??

Java类型转换

今天犯了个错,char转int直接强转,然后得到了Unicode。
可以Integer.parseInt('x'+"")转成string再转换
或者Character的静态方法:Character.getNumericValue((int)'5')

今天发现个好玩的事情,测试一个回文字符串算法,重复十亿次看时间,发现二十个字符和十个字符好时差别不大,四十个和二十个却有十倍的差距,我猜应该是虚拟机对段字符串有优化,留个坑改天详细研究。

Java语言基础

final关键字

static关键字

静态变量

同一个类在内存中只有同一个拷贝,可以用类名直接访问,也可以通过对象访问(不推荐)

静态方法

可以通过类名调用,任何势力都可以调用,所以静态方法中不能有this和super关键字。静态方法必须被实现,不能是abstract。

静态代码块

JVM加载类的时候按照出现的先后顺序执行,每个代码块只被执行一次。

静态内部类

  • 一个内部类如果想要有静态的成员变量或者成员方法,那他本身必须是static关键字修饰的。
  • 静态内部类只能访问外部的静态方法和变量,非静态的不能访问,这是静态内部类最大的使用限制,普通的非静态内部类没有这个限制。

    静态导包

    导入静态方法,简化操作,比如:
    1
    import static java.lang.System.out
    2
    out.println("text");

算法