深入分析大厂面试题一

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()方法 源码+解释

image-20210122164721845.png
image-20210121164012084.png

why

按照代码结果,java字符串答案为false 必然是两个不同的java,那另外一个java字符串如何加载进来的?

有一个初始化的java字符串(JDK出娘胎自带的), 在加载sun.misc.Version这个类的时候进入常量池

OpenJDK8底层源码说明

System代码解析
System-initializeSystemClass-Version
image-20210122165009857.png
image-20210122165039675.png
类加载器和rt.jar
根加载器提前部署加载rt.jar
OpenJDK8源码:
  http://openjdk.java.net/openjdk8\jdk\srclshare\classes\sun\misc
image-20210121165630821.png
总结
image-20210121165737495.png

1.1.3 考查点

intern()方法,判断true/false?

《深入理解java虚拟机》书原题 是否读过经典JVM书籍

1.2 字节跳动两数求和

1.2.1 面试题目code

力扣第一题:两数之和
https://leetcode-cn.com/problems/two-sum/
image-20210121170457405.png

1.2.2 深入分析

暴力法 哈希(更优解法)

通过双重循环遍历数组中所有元素的两两组合,当出现符合的和时返回两个元素的下标

1.2.3 考查点

你都想来大厂了,算法居然从来没有刷过?呵呵 机会偏爱有准备有实力的头脑,不是白说的.....

字节跳动手写LRUs算法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容