【面经】数据开发一面-众安保险

本文分享了一位同学的众安保险数据开发工程师实习生面试经验,强调了面试中不断学习和成长的重要性。面试涉及Java编程语言、数据结构、并发、数据库以及操作系统等多个方面,包括字符串常量池、Integer缓存池、线程安全、哈希表实现、TCP四次挥手等知识点。还探讨了大数据生态、SQL查询及SQL题目。
摘要由CSDN通过智能技术生成

  众安保险数据开发工程师实习生招聘一面面经。同学门一定不要等准备好了再去面试。先投递简历进行面试,将每次被问到的问题都记录下来,可以发现自己成长非常快。祝好。给出了面试中遇到的问题。

1.自我介绍

自由发挥。

2.对什么编程语言最熟悉?

回答了 Java。从这个问题可以看出可以准备自己熟悉的语言,就算是数据研发也不一定是 Java。

3.对 Java 中如下代码的讨论
String s1 = "abc";
String s2 = new String("abc");

问题 1: s1 == s2 的结果是什么?

问题2: s2 = new String(“abc”)创建了几个对象?

解释:

不看上面的代码,我们有如下结论:

  • 当使用 “=” 直接赋值时,字符串“abc”会被存储在常量池(String Pool)中,只有1份
    • 若 “abc” 已经在常量池中,则创建 0 个对象,直接将引用赋值给s1
    • 若 “abc” 不在常量池中,则创建 1 个对象,并将引用赋值给s1
  • 当使用 new String(“abc”) 创建字符串时,JVM会先检索常量池中是否存在“abc”
    • 若 “abc” 不在常量池中,则会在常量池中创建这个字符串,然后执行 new 操作,将 “abc“ 传入构造方法,在堆内存中创建一个存储“abc”的 String 对象,将对象的引用赋值给 s2,此过程创建了 2 个对象。
    • 若 “abc” 已经在常量池中,则直接执行 new 操作,将 “abc“ 传入构造方法,在堆内存中创建一个存储“abc”的 String 对象,将对象的引用赋值给 s2,此过程创建了 1 个对象。

通过上面的分析可以得到答案:

  • 问题 1 中 s1 执行 String Pool 中的 “abc”,而 s2 是在堆中创建的对象,因此答案是 false。
  • 问题 2 中由于在创建 s1 时已经在常量池中创建了 “abc”,因此只会创建 1 个对象。

扩展:

当一个字符串调用 intern() 方法时,如果 String Pool 中已经存在一个字符串和该字符串值相等(使用 equals() 方法进行确定),那么就会返回 String Pool 中字符串的引用;否则,就会在 String Pool 中添加一个新的字符串,并返回这个新字符串的引用。例如如下代码:

String s1 = new String("aaa");
String s2 = new String("aaa");
System.out.println(s1 == s2);           // false
String s3 = s1.intern();
String s4 = s2.intern();
System.out.println(s3 == s4);           // true
4.Java 中对如下代码的输出是什么?
Integer a = 128;
Integer b = 128;
System.out.println(a == b);

答案:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值