美文网首页
如何看待Java面试总是问StringBuffer,String

如何看待Java面试总是问StringBuffer,String

作者: OSET我要编程 | 来源:发表于2018-04-03 17:48 被阅读67次

今天小编分享一篇文章关于如何看待Java面试总是问StringBufferStringBuilder区别是啥?

文章来源于一点资讯

多人觉得在java面试中总是会被问到StringBuffer,StringBuilder区别是什么,难道国内的java档次就这么低吗?此话一出,引起了广泛讨论,那么事实真是如此吗?

其实这样的基础问题也够刷掉很大部分人,开发不仅仅是你会的东西有多少,多厉害,更多的是在乎你是否了解底层原理,思维方式等。

再者StringBufferStringBuilder问题档次并不低,如果仔细思考的话,这是一个历史悠久,并且至今仍在困扰很多程序员的问题。

这是个字符串内存管理策略问题。

几十年前在C和Pascal的时代,就有字符串存储形式是 \0结尾还是长度+内容的争论,这个问题严重影响了API的设计,内存的管理,甚至程序架构。

字符串是一种非常常用的生命周期通常很短的对象,而且它的size是不固定的,长度为 1或 1GB都有可能,导致内存管理非常麻烦复杂。

用长度+内容表示,每个串都要额外付出4个字节,用\0结尾吧,算长度就很麻烦,万一结尾忘了\0就要崩溃,选哪个好

字符串的长度放哪里,放到起始指针的位置,还是起始指针的前面

如果放前面,那么字符串起始指针和内存块起始不一致怎么解决

字符串拼接的时候把源串复制到目标串结尾,那么目标串剩余内存不够怎么办,重新分配要多一次赋值,频繁拼接性能有问题怎么办

函数返回值如果是字符串,那么这个串是调用者分配内存还是被调用者分配,谁来负责释放。

如果调用者分配,那么调用者怎么知道字符串将有多长。

频繁分配释放大小各异的字符串,会不会导致内存碎片化

对于小字符串是分配在堆上还是栈上

怎么把常量串和变量串分别处理

如果设计面向对象的字符串,字符串加法怎么定义,是在原来对象上加,还是生成一个新对象

如果每加一次都生成新对象会不会导致构造析构太频繁

如果是托管语言会不会太频繁GC

要不要设计单独的辅助类来解决字符串拼接问题

那这个辅助类怎么设计,要不要考虑线程安全

如果考虑线程安全的话,怎么兼顾性能。

所以不要小看了这些基础问题,如果你能了解透彻,在学习更高技术时才会显得不那么吃力,公司往往需要这样的人才!

经常听见有人这样说:

现在JAVA开发工程师前途何在,到底有没有前途呢?

怎样才能做一个好的软件工程师,我的路应该如何去走?

我是新手,不知道这个专业怎么样?

如果你在步入IT行业的路上面临类似以上问题,不要犹豫,点此领取免费试听课,看一下自己是否适合这个行业

相关文章

网友评论

      本文标题:如何看待Java面试总是问StringBuffer,String

      本文链接:https://www.haomeiwen.com/subject/wxkvcftx.html