一些面试问题的总结

最近金三银四 互联网人都在跳槽

我总结下我在面试的时候遇到一些对于我来说略显刁钻的问题

1:深拷贝和浅拷贝的区别?

技术面:深拷贝和浅拷贝的区别?

我:浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。

  深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。

技术面:适用场景或是你以前项目了运用到的。

我:懵了只写过demo那知道这个 。

  其实这个最常见且大家都知道其原理的。在某些业务场景里你在修改一个对象或集合

  不想对原有对象改变有不同的应用场所可以深拷贝出来,防止对原有数据的改动。

  浅拷贝就简单多了  局部基本数据类型都是浅拷贝

这个问题在于你太熟了都不会去联想到这就是深浅拷贝的应用场景

————————————————————————————————————————

2:sql优化的小问题

今天想起来这样一个问题count(*)和count(1)有什么区别

  我巴拉巴拉给面试官一顿瞎说,结果面试官告诉我没区别就是看着不一样

真实的答案 : count(*) > count(1) > count(id) > count(字段)

效率高的在左侧,至于为什么自己百度下。

 

3:String为什么是不可变的且这样做有什么好处

面试官:为什么String是不可变的

我:(好家伙这不是送分题吗),因为String被final修饰了编写这个类的作者不想让别人去改变;

面试官:就这些?

我:对了一个字符串被创建时定义的值  下一个有同样值的字符串对象被创建时会指向上一个值的地址,

  说白了就是共同使用一个值,不会再额外分配一个地址

  (好家伙我以为这可以过关了)。

面试官:那你据举例子说说这种调用同一个值的好处

我:(思考了30秒)由于 String 是不可变的,它可以安全地共享许多线程,这对于多线程编程非常重要.

  并且避免了 Java 中的同步问题,不变性也使得String 实例在 Java 中是线程安全的,这意味着你不需要从外部同步 String 操作。

  还有在数据类型(HashMap)中用String做Key能保证Key的唯一性,因为String不可变所以不用一次再一次的去计算hashcode值,提高效率

面试官:你知道在多线程里 String在截取时会引发内存泄漏吗?

我:这个不太清楚,您能跟我说下原理吗?

面试官:好,这个问题以后在讨论,我们问下一个。

我:?

 _____________________________________________________________________________________________________________________

突然想起了一个问题当时是这样问的

面试官:有没有用过线程安全的类?

我:当然用过ConcurrentHashMap嘛。

面试官:知道他的原理吗?

我:不是很了解,只知道它运用了锁分段技术,然锁的颗粒度变得很小,提高了效率

面试官:那你在什么时候用过他呀。

我:什么时候说不上来,可以说情景:例如在做微服务级的保险业务时难免会多个线程同时执行所以用线程安全的ConcurrentHashMap

面试官:谈谈这个集合的put机制,和扩容机制吧。

我:(我真不知道呀)胡诌time

最后面试完成后在地铁上看了这个集合相关的东西,地址下方

https://blog.csdn.net/y277an/article/details/95041965?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1.no_search_link&spm=1001.2101.3001.4242

怎么说呢还是学的少面试官想问的住你怎么都行

常年用框架的小伙伴,突然问你jdbc怎么调用数据库步骤是什么你都蒙

持续跟新

posted @ 2021-04-12 12:25  小裴和他的接口们  阅读(73)  评论(0)    收藏  举报