作为一个Java程序员,这 8 个开源类库你必须知道!,腾讯Java面试题

  • write(),将字符或者字节写入输出流中。

IOUtils.write(“沉默王二”, response.getOutputStream(), “UTF-8”);

  • toInputStream(),将指定的字符转成输入流。

String content=req.getParameter(“content”);

InputStream inputStream=IOUtils.toInputStream(content,“utf-8”);

  • readLines(),从输入流中一行一行地读取,并按照指定的字符编码返回字符串列表。

List lines = IOUtils.readLines(new InputStreamReader(new FileInputStream(file), “utf-8”));

  • copyLarge(),从输入流中复制内容到输出流,超过 2GB。

private File downloadFile(HttpResponse response) {

File dir = new File(“downloadedFiles”);

if (!dir.exists()) {

dir.mkdir();

}

File outputFile = new File(“downloadedFiles/temp” + RandomStringUtils.randomAlphanumeric(3));

try {

IOUtils.copyLarge(response.getEntity().getContent(), new FileOutputStream(outputFile));

return outputFile;

} catch (Exception e) {

throw new RuntimeException(e);

} finally {

request.releaseConnection();

}

}

  • readFully(),把输入流中的内容读入到字节数组中。

byte[] intArray = new byte[Bytes.SIZEOF_INT];

IOUtils.readFully(in, intArray);

2)FileUtils

org.apache.commons.io.FileUtils,操作文件或者目录的工具类,下面是其常用的方法。

  • deleteDirectory(),删除目录。

FileUtils.deleteDirectory(file);

  • readFileToString(),把文件的内容读入到字符串中。

String fileAsString = FileUtils.readFileToString(reportFile);

  • deleteQuietly(),删除文件,但不抛出异常。

FileUtils.deleteQuietly(outputFile);

  • copyFile(),把文件复制到一个新的位置。

FileUtils.copyFile(source, dest);

  • writeStringToFile(),把字符串写入到文件。

FileUtils.writeStringToFile(templateFile, generatedText, Charset.forName(“UTF-8”));

  • forceMkdir(),强制创建目录,包括任何必需但不存在的父目录。

File uploadDirectory = new File(this.uploadPath);

if (!uploadDirectory.exists()) {

FileUtils.forceMkdir(uploadDirectory);

}

  • write(),把字符或者字节写入到文件。

FileUtils.write(new File(“C:\Users\cmower\test.txt”), “沉默王二”, “utf-8”);

  • listFiles(),列出指定目录下的所有文件。

public void processResultsDirectory(String dirName) {

File root = new File(dirName);

try {

Collection files = FileUtils.listFiles(root,

new RegexFileFilter(jmeterJTLFileName),

DirectoryFileFilter.DIRECTORY);

for (Iterator iterator = files.iterator(); iterator.hasNext()😉 {

File file = (File) iterator.next();

parse(file);

}

} catch (Exception e) {

e.printStackTrace();

}

}

  • copyDirectory(),将目录下的所有子目录及文件复制到新的目录。

FileUtils.copyDirectory(source, dest);

  • forceDelete(),强制删除文件或者目录及其所有子目录和文件。

FileUtils.forceDelete(tmpFile);

3)StringUtils

org.apache.commons.lang3.StringUtils,操作字符串的工具类,并且是 null 安全的,下面是其常用的方法。

  • isBlank(),检查字符是否为空字符串"",或者 null,或者空格。

if (StringUtils.isBlank(name))

{

throw new IllegalArgumentException(“姓名不能为空”);

}

检查结果如下所示。

StringUtils.isBlank(null) = true

StringUtils.isBlank(“”) = true

StringUtils.isBlank(" ") = true

StringUtils.isBlank(“沉默王二”) = false

StringUtils.isBlank(" 沉默王二 ") = false

  • isNotBlank(),与 isBlank() 检查的结果相反。

  • isEmpty(),检查字符是否为空字符串"",或者 null;和 isBlank() 不同,不包括空格的检查。

if (StringUtils.isEmpty(name)) {

throw new IllegalArgumentException(“姓名不能为 null 或者空字符串”);

}

检查结果如下所示。

StringUtils.isEmpty(null) = true

StringUtils.isEmpty(“”) = true

StringUtils.isEmpty(" ") = false

StringUtils.isEmpty(“沉默王二”) = false

StringUtils.isEmpty(" 沉默王二 ") = false

  • isNotEmpty(),与 isEmpty() 检查的结果相反。

  • join(),将多个元素连接成一个字符串。

StringUtils.join(null) = null

StringUtils.join([]) = “”

StringUtils.join([null]) = “”

StringUtils.join([“沉默”, “王二”]) = “沉默王二”

StringUtils.join([null, “”, “一枚有趣的程序员”]) = “一枚有趣的程序员”

  • equals(),比较两个字符序列是否相等。

StringUtils.equals(null, null) = true

StringUtils.equals(null, “沉默王二”) = false

StringUtils.equals(“沉默王二”, null) = false

StringUtils.equals(“沉默王二”, “沉默王二”) = true

StringUtils.equals(“cmower”, “CMOWER”) = false

  • split(),把字符串拆分为数组,拆分符为空白字符。

StringUtils.split(null) = null

StringUtils.split(“”) = []

StringUtils.split(“沉默王二 沉默王三”) = [“沉默王二”, “沉默王三”]

StringUtils.split(“沉默王二 沉默王三”) = [“沉默王二”, “沉默王三”]

StringUtils.split(" 沉默王二 ") = [“沉默王二”]

  • replace(),替换另一个字符串中所有出现的字符串。

StringUtils.replace(null, *, *) = null

StringUtils.replace(“”, *, *) = “”

StringUtils.replace(“any”, null, *) = “any”

StringUtils.replace(“any”, *, null) = “any”

StringUtils.replace(“any”, “”, *) = “any”

StringUtils.replace(“沉默王二”, “二”, null) = “沉默王二”

StringUtils.replace(“沉默王二”, “二”, “”) = “沉默王”

StringUtils.replace(“沉默王二”, “二”, “三”) = “沉默王三”

4)FilenameUtils

org.apache.commons.io.FilenameUtils,操作文件名或者路径的工具类,下面是其常用的方法。

  • getExtension(),获取文件的扩展名。

FilenameUtils.getExtension(“牛逼.txt”); --> “txt”

FilenameUtils.getExtension(“a/b/牛逼.jpg”); --> “jpg”

FilenameUtils.getExtension(“a/牛逼.txt/c”); --> “”

FilenameUtils.getExtension(“a/b/c”); --> “”

  • getBaseName(),获取单纯的文件名或者路径名,文件时去掉路径和扩展名;路径时去掉父级路径。

FilenameUtils.getBaseName(“a/b/牛逼.txt”); --> “牛逼”

FilenameUtils.getBaseName(“牛逼.txt”); --> “牛逼”

FilenameUtils.getBaseName(“a/b/c”); --> c

FilenameUtils.getBaseName(“a/b/c/”); --> “”

  • getName(),如果是文件时,获取文件名和后缀,去掉路径;如果是路径时,去掉父级路径。

FilenameUtils.getName(“a/b/牛逼.txt”); --> “牛逼.txt”

FilenameUtils.getName(“牛逼.txt”); --> “牛逼.txt”

FilenameUtils.getName(“a/b/c”); --> c

FilenameUtils.getName(“a/b/c/”); --> “”

  • concat(),将路径和文件名连接在一起。

FilenameUtils.concat(“/foo/”, “bar”); --> /foo/bar

FilenameUtils.concat(“/foo”, “bar”); --> /foo/bar

FilenameUtils.concat(“/foo”, “/bar”); --> /bar

FilenameUtils.concat(“/foo”, “C:/bar”); --> C:/bar

FilenameUtils.concat(“/foo”, “C:bar”); --> C:bar (*)

FilenameUtils.concat(“/foo/a/”, “…/bar”); --> foo/bar

FilenameUtils.concat(“/foo/”, " …/…/bar"); --> null

FilenameUtils.concat(“/foo/”, “/bar”); --> /bar

FilenameUtils.concat("/foo/… ", “/bar”); --> /bar

FilenameUtils.concat(“/foo”, " bar/c.txt"); --> /foo/bar/c.txt

FilenameUtils.concat(“/foo/c.txt”, “bar”); --> /foo/c.txt/bar (!)

  • wildcardMatch(),检查文件名是否匹配指定的格式。

wildcardMatch(“c.txt”, “*.txt”) --> true

wildcardMatch(“c.txt”, “*.jpg”) --> false

wildcardMatch(“a/b/c.txt”, “a/b/*”) --> true

wildcardMatch(“c.txt”, “*.???”) --> true

wildcardMatch(“c.txt”, “*.???”) --> false

  • separatorsToUnix(),将所有分隔符转换为正斜杠的 Unix 分隔符。

FilenameUtils.separatorsToUnix(“my/unix/filename”);

  • getFullPath(),获取文件的完整路径。

getFullPath(“C:\a\b\c.txt” --> C:\a\b\

getFullPath(“~/a/b/c.txt” --> ~/a/b/

getFullPath(“a.txt” --> “”

5)ArrayUtils

org.apache.commons.lang3.ArrayUtils,操作数组的工具类,下面是其常用的方法。

  • contains(),检查数组中是否包含某个值

public static boolean containsAll(Object[] one, Object[] two) {

for (Object b : two) {

if (!ArrayUtils.contains(one, b)) {

return false;

}

}

return true;

}

  • addAll(),将所有元素添加到一个数组中。

ArrayUtils.addAll(null, null) = null

ArrayUtils.addAll(array1, null) = cloned copy of array1

ArrayUtils.addAll(null, array2) = cloned copy of array2

ArrayUtils.addAll([], []) = []

ArrayUtils.addAll([null], [null]) = [null, null]

ArrayUtils.addAll([“a”, “b”, “c”], [“1”, “2”, “3”]) = [“a”, “b”, “c”, “1”, “2”, “3”]

  • clone(),浅拷贝一个数组。

public QualityGateTask[] getQueue() {

return (QualityGateTask[]) ArrayUtils.clone(queue);

}

  • isEmpty(),检查数组是否为 null 或者没有元素。

if (ArrayUtils.isEmpty(objectIds)) {

throw new IllegalArgumentException(“对象的ID不能为空”);

}

  • add(),在数组中添加一个新的元素,原数组不变。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。

面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!

套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
[外链图片转存中…(img-GClpmtLU-1712003978505)]
[外链图片转存中…(img-aNEwWcZy-1712003978506)]
[外链图片转存中…(img-9c2MJr3r-1712003978506)]
[外链图片转存中…(img-fAYFdCKO-1712003978507)]
[外链图片转存中…(img-lMKtPl9a-1712003978508)]
[外链图片转存中…(img-VkGvc3yP-1712003978508)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-XflxUbJA-1712003978509)]

总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。

面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!

[外链图片转存中…(img-Smyz0DAq-1712003978509)]

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值