分享
这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!
Spring Cloud实战
Spring Boot实战
面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
* [10.append方法](about:blank#10append_168)
* * [1)参数为Object](about:blank#1Object_170)
* [2)参数为String](about:blank#2String_185)
* [11.delete方法](about:blank#11delete_202)
* [12.replace方法](about:blank#12replace_218)
* [13.substring方法](about:blank#13substring_234)
* [14.insert方法](about:blank#14insert_258)
* [15.indexOf方法](about:blank#15indexOf_276)
* [16\. reverse方法](about:blank#16_reverse_291)
* [17\. toString方法](about:blank#17_toString_307)
* [18\. writeObject方法](about:blank#18_writeObject_324)
* [19\. readObject方法](about:blank#19_readObject_342)
======================================================================
StringBuffer是java中用来处理字符串的类。不同于String,StringBuffer保存的字符串可以进行修改,拼接,删除等操作。相比于StringBuilder,StringBuffer几乎所有方法都被synchronized关键字修饰,因此StringBuffer是线程安全的,同时效率也比StringBuilder低。
StringBuffer.java中的相关代码:
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
{
…
}
**1.StringBuffer被final修饰,不能被继承。
2.继承了AbstractStringBuilder,StringBuffer中的方法基本都是通过AbstractStringBuilder实现。
3.实现了java.io.Serializable接口,可以进行序列化。
4. 实现了CharSequence接口,可以将字符串当成一个一个的字符处理。**
========================================================================
StringBuffer.java中的相关代码:
// 缓存,保存最后一次调用toString方法返回的字符串
// 当StringBuffer内容发生变化,缓存被清除
private transient char[] toStringCache;
static final long serialVersionUID = 3388685877147921107L; // 用于序列化
// 需要序列化的字段,用于序列化
private static final java.io.ObjectStreamField[] serialPersistentFields =
{
new java.io.ObjectStreamField("value", char[].class),
new java.io.ObjectStreamField("count", Integer.TYPE),
new java.io.ObjectStreamField("shared", Boolean.TYPE),
};
1)无参数
StringBuffer.java中的相关代码:
public StringBuffer() {
super(16);
}
默认情况下,调用构造方法,会调用父类的构造方法,分配一个容量为16个字符空间。
2)参数为int
StringBuffer.java中的相关代码:
public StringBuffer(int capacity) {
super(capacity);
}
调用父类方法,指定需要分配的空间的大小来进行分配。
3)参数为String
StringBuffer.java中的相关代码:
public StringBuffer(String str) {
super(str.length() + 16);
append(str);
}
调用父类的方法,为字符串分配空间,同时再多分配出来16个字符大小的空间,防止之后字符串长度发生改变;保存字符串。
获取StringBuffer中字符串的长度。
StringBuffer.java中的相关代码:
@Override
public synchronized int length() {
// 返回已使用空间的数量,count为父类的全局变量
return count;
}
获取StringBuffer当前最大能保存的字符串的长度。
StringBuffer.java中的相关代码:
@Override
public synchronized int capacity() {
// 返回字符数组长度,value为父类的全局变量
return value.length;
}
对字符数组进行扩容,保证空间大小足够。
StringBuffer.java中的相关代码:
@Override
public synchronized void ensureCapacity(int minimumCapacity) {
// 调用父类的ensureCapacity方法
super.ensureCapacity(minimumCapacity);
}
缩容,对字符数组中没有使用的空间进行释放。
StringBuffer.java中的相关代码:
@Override
public synchronized void trimToSize() {
// 调用父类的trimToSize方法
super.trimToSize();
}
设置字符数组空间的大小。
StringBuffer.java中的相关代码:
@Override
public synchronized void setLength(int newLength) {
// 清除缓存
toStringCache = null;
// 调用父类的setLength方法
super.setLength(newLength);
}
获取字符串中指定位置的字符。
StringBuffer.java中的相关代码:
@Override
public synchronized char charAt(int index) {
// 若指定位置小于0或指定位置超过了字符串的长度
if ((index < 0) || (index >= count))
throw new StringIndexOutOfBoundsException(index);
// 返回指定位置的字符
return value[index];
}
设置字符串中指定位置index的字符为ch。
StringBuffer.java中的相关代码:
@Override
public synchronized void setCharAt(int index, char ch) {
// 若指定位置小于0或指定位置超过了字符串的长度
if ((index < 0) || (index >= count))
throw new StringIndexOutOfBoundsException(index);
// 清除缓存
toStringCache = null;
// 设置字符
value[index] = ch;
}
向当前字符串后再拼接一个字符串。
1)参数为Object
StringBuffer.java中的相关代码:
@Override
public synchronized StringBuffer append(Object obj) {
// 清除缓存
toStringCache = null;
// 调用父类的append方法
super.append(String.valueOf(obj));
// 返回
return this;
}
2)参数为String
StringBuffer.java中的相关代码:
@Override
public synchronized StringBuffer append(String str) {
// 清除缓存
toStringCache = null;
// 调用父类的append方法
super.append(str);
// 返回
return this;
}
其它参数形式的append方法的执行流程,也都是先清除缓存,再调用父类的append方法,最后返回。
删除字符串中start到end之间的字符。
StringBuffer.java中的相关代码:
@Override
public synchronized StringBuffer delete(int start, int end) {
// 清除缓存
toStringCache = null;
// 调用父类的delete方法
super.delete(start, end);
// 返回
return this;
}
最后
小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
开源分享:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】
程序员代码面试指南 IT名企算法与数据结构题目最优解
这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!
《TCP-IP协议组(第4版)》
本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。
本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。
Java开发手册(嵩山版)
这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**
MySQL 8从入门到精通
本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。
Spring5高级编程(第5版)
本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。
本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。
JAVA核心知识点+1000道 互联网Java工程师面试题
企业IT架构转型之道 阿里巴巴中台战略思想与架构实战
本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。
af和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。
[外链图片转存中…(img-0QBLZlEL-1715229698191)]
JAVA核心知识点+1000道 互联网Java工程师面试题
[外链图片转存中…(img-ABb9Tfsx-1715229698191)]
[外链图片转存中…(img-Dagl89Th-1715229698192)]
企业IT架构转型之道 阿里巴巴中台战略思想与架构实战
本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。
[外链图片转存中…(img-iWiKvvOH-1715229698192)]