1 JAVA基础题目
1.1 58同城的java字符串常量池
1.1.1 面试题目code
public class StringPool58Demo {
public static void main(String[] args) {
String str1 = new StringBuilder("58").append("tongcheng").toString();
System.out.println(str1);
System.out.println(str1.intern());
System.out.println(str1 == str1.intern());
System.out.println("------------");
String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2);
System.out.println(str2.intern());
System.out.println(str2 == str2.intern());
}
}
1.1.2 深入分析
intern()方法 源码+解释
why
按照代码结果,java字符串答案为false 必然是两个不同的java,那另外一个java字符串如何加载进来的?
有一个初始化的java字符串(JDK出娘胎自带的), 在加载sun.misc.Version这个类的时候进入常量池
OpenJDK8底层源码说明
System代码解析
System-initializeSystemClass-Version
类加载器和rt.jar
根加载器提前部署加载rt.jar
OpenJDK8源码:
http://openjdk.java.net/openjdk8\jdk\srclshare\classes\sun\misc
总结
1.1.3 考查点
intern()方法,判断true/false?
《深入理解java虚拟机》书原题 是否读过经典JVM书籍
1.2 字节跳动两数求和
1.2.1 面试题目code
力扣第一题:两数之和
https://leetcode-cn.com/problems/two-sum/
1.2.2 深入分析
暴力法 哈希(更优解法)
通过双重循环遍历数组中所有元素的两两组合,当出现符合的和时返回两个元素的下标
1.2.3 考查点
你都想来大厂了,算法居然从来没有刷过?呵呵 机会偏爱有准备有实力的头脑,不是白说的.....
字节跳动手写LRUs算法