【2023,学点儿新Java-13】阶段练习之Java面试企业真题(阿里巴巴&拼多多 等) | 常用的Java命令行操作都有哪些 | 如何解决Java的内存泄漏和内存溢出问题?

前情回顾:

  • 【2023,学点儿新Java-12】小结:阶段性复习 | Java学习书籍推荐(小白该读哪类Java书籍?有一定基础后,再去读哪类书籍?)

  • 【2023,学点儿新Java-11】基础案例练习:输出个人基础信息、输出心形 | Java中 制表符\t 和 换行符\n 的简单练习

  • 【2023,学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制:JVM |详解Java内存泄漏与溢出 |Java优缺点总结 |附:GPT3.5-turbo问答测试

  • 更多Java系列文章,可参阅博主主页哦!

 
对于绝大多数人而言,人生不是轨道,也不是旷野,更像是一片树林。轨道太过于局限,旷野太过于自由。

树林里有很多人踏出来的小路,但更多的是 还没有涉足的林地。你可以选择走那些小路,也可以选择去走那些人迹罕至的地方。

 

作者主页: 追光者♂

        

个人简介:
 
[1] 计算机专业硕士研究生
 
[2] 2022年度博客之星人工智能领域TOP4
 
[3] 阿里云社区特邀专家博主
 
[4] CSDN-人工智能领域优质创作者
 
[5] 预期2023年10月份 · 准CSDN博客专家  
 

  • 无限进步,一起追光!!!

        

感谢大家 点赞  收藏⭐   留言!!!

        

本篇也属于Java基础的阶段性复习。主要针对 阿里巴巴和拼多多等大厂中对于Java基础可能会提到的一些问题。其中对于Java中的内存溢出和内存泄漏提到了一些解决方案。

 

目录

  • 一、企业真题
    • 1.1 一个”.java”源文件中 是否可以包括多个类?有什么限制?
    • 1.2 简要说一下Java的优势(阿里巴巴)
    • 1.3 常用的命令行操作都有哪些?(至少4个)
    • 1.4 Java中是否存在内存溢出、内存泄漏?如何解决?请举例说明(拼多多)
  • 二、为什么说 ChatGPT的核心算法 是 RL(强化学习)和 UL(无监督学习)

一、企业真题

1.1 一个”.java”源文件中 是否可以包括多个类?有什么限制?

答:是的!~

在一个”.java”源文件中可以包括多个类,但仅能有一个public类这是因为Java源文件中的public类 必须与文件名相同,而其他非public类则可以存在于同一个源文件中,但是它们不能被其他源文件访问。

此外,如果一个源文件包含多个类,则编译时会生成 与每个类相关的.class文件,而不是 只生成一个.class文件,这种情况下,每个类 对应的.class文件的名称都与其类名相同。

 

1.2 简要说一下Java的优势(阿里巴巴)

若是 用几个词 描述一下的话:

    1. 跨平台型
    1. 安全性高
    1. 简单性
    1. 高性能
    1. 面向对象性
    1. 健壮性

丰富一下的话:

Java具有以下优势:

  1. 简单易学:Java的语法和结构 类似于C++,但是 相对更简单易学,并且减少了一些C++中易犯的错误。

  2. 跨平台性:Java使用的是JVM(Java虚拟机)来运行代码,这使得Java程序 可以在不同的操作系统上运行,而不需要 针对不同操作系统 编写不同的代码。

  3. 面向对象编程:Java是一种面向对象的语言,它支持封装、继承和多态等概念,让程序 更加具有可读性、可扩展性和可维护性。

  4. 安全性高Java的代码运行在虚拟机中,没有直接访问操作系统的权限,因此可以有效地防止针对操作系统的攻击

  5. 内存管理:Java提供了 自动内存管理机制,开发人员 不需要自己去管理内存,这样可以 避免内存泄漏和其他内存问题。

  6. 多线程支持:Java提供了 多线程支持,可以充分利用 多处理器计算机的性能。

  7. 强大的开源生态系统:Java的开源生态系统 非常活跃,有大量的库和框架可供选择,开发人员 可以使用这些工具 来提高开发效率和代码质量。

说到“跨平台”和“面向对象”,事实上 现在有很多语言都支持这二者。但是与Java相比,它们可能没有太过“发达”的社区。

如上所述,Java的“社区”是很“繁荣”的,有许多的第三方框架 可以去使用。基本上需要什么样的功能,都可以去开源社区去找到对应的框架(技术)去调用,这也是Java极其具备优势的“一个点”。

其实Android最初是想使用C或C++来作为开发语言的,但其最终的底层开发语言主要还是选择了Java,原因之一也是Java社区很繁荣。

 

1.3 常用的命令行操作都有哪些?(至少4个)

这里 不再对之前已经介绍过的 基础命令行操作 进行回顾啦!大家可以浏览之前的系列文章。

以下是其它的Java常用命令行操作:(这些命令行操作 可以帮助Java开发人员快速、准确地定位问题,并提高Java程序的性能和稳定性。) 包括但不限于下述一些常用的Java命令行指令。

  1. javac:用于编译Java源代码文件,将其转换成 可执行的字节码文件

  2. java:用于运行Java字节码文件,JVM会解释字节码,将代码转换成 操作系统可以执行的机器码

  3. jar:用于创建JAR(Java Archive)归档文件,可以将一组 类库文件打包成一个单独的文件 进行管理和发布

  4. jps:用于列出 当前正在运行的Java进程,可以显示 每个Java进程的PID(进程ID)和类名。

  5. jstat:用于监视Java程序运行时的状态,例如垃圾回收、线程、类、编译等。

  6. jmap:用于生成Java堆转储文件,用于诊断内存问题

  7. jstack:用于生成Java进程中 每个Java线程的堆栈跟踪信息,有助于 调试线程问题

  8. jcmd:用于发送命令 到指定的Java进程,可以执行 诸如GC、垃圾回收等操作。

  9. javap:用于查看Java字节码文件的反编译结果,可以查看 类中的字段和方法。

  10. jconsoleJava虚拟机 监视工具,可以监控 运行中的Java程序的性能、内存、线程和资源信息。

 

1.4 Java中是否存在内存溢出、内存泄漏?如何解决?请举例说明(拼多多)

 
答案是 Yes!在 Java中 存在内存溢出和内存泄漏问题。

简单地讲,内存溢出(OOM)是指 在申请内存时 没有足够的内存空间可用,而内存泄漏 则是指 本应该被回收的内存没有被回收,最终导致内存被耗尽。(关于Java内存泄漏与内存溢出,更多可参阅:详解Java内存泄漏和内存溢出)

下面列举几个解决内存溢出、内存泄漏的 方法 和 具体实例:

  1. 减少对象创建:Java通过 垃圾回收器 来回收内存,在这个过程中,如果程序 频繁地创建、销毁对象,将导致 垃圾回收器的频繁运行,从而导致性能降低和内存溢出。可以使用对象池技术 来缓存对象,避免 频繁创建和销毁对象

  2. 关闭资源:在使用一些需要手动关闭的资源,如文件、数据库连接等时,如果没有及时关闭资源,将会导致内存泄漏问题。可以通过使用finally块或者try-with-resources语句来确保资源被正确关闭,例如:

try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
  1. 根据需求进行内存优化:当内存过大或过小 都有可能引发内存问题,需要根据实际情况进行内存优化,可以通过 使用jstat等工具 来监控程序运行中的内存使用情况。 例如 可以通过设置JVM参数来限制内存大小,例如:
java -Xmx256m MyClass

这表示将JVM最大内存设置为256MB。
 

  1. 合理设计程序逻辑:在程序中使用循环、嵌套等语句 会增加内存的消耗,因此在设计程序时 需要减少无用的循环和递归。

 

二、为什么说 ChatGPT的核心算法 是 RL(强化学习)和 UL(无监督学习)

 

该问题将在下一篇中记录!

 


 

热门专栏推荐

  • Python&AI专栏:【Python从入门到人工智能】
  • 前端专栏:【前端之梦~代码之美(H5+CSS3+JS.】
  • 文献精读&项目专栏:【小小的项目 (实战+案例)】
  • C语言/C++专栏:【C语言、C++ 百宝书】(实例+解析)
  • Java系列(Java基础/进阶/Spring系列/Java软件设计模式等)
  • 问题解决专栏:【工具、技巧、解决办法】
  • 加入Community 一起追光:追光者♂社区

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

你可能感兴趣的:(备战2023博客之⭐_Java,Java教程,2023Java面试题,企业真题,内存泄漏,内存溢出,Java的优势,Java内存优化)