JavaRush /Java 博客 /Random-ZH /喝咖啡休息#58。Java 开发人员应该了解的 20 个重要面试问题。了解多种编程语言的好处

喝咖啡休息#58。Java 开发人员应该了解的 20 个重要面试问题。了解多种编程语言的好处

已在 Random-ZH 群组中发布

Java 开发人员应该了解的 20 个重要面试问题

来源: Dev.to喝咖啡休息#58。 Java 开发人员应该了解的 20 个重要面试问题。 了解多种编程语言的好处 - 1

1. Java中的异常有哪两种类型?它们之间有什么区别?

答:Java中有两种类型的异常:检查异常和非检查异常。
  1. 如果未检查异常可以在方法或构造函数执行并传播到方法或构造函数边界之外时抛出,则不需要在方法或构造函数关键字语句中声明它们。
  2. 另一方面,受检查的异常必须在构造函数的方法或关键字语句中声明。

2.什么是JVM?为什么Java被称为“平台无关的编程语言”?

Ans:Java虚拟机(JVM)是​​一个可以执行Java字节码的进程虚拟机。每个Java源文件被编译成字节码文件,由JVM执行。Java 语言旨在创建可以在任何平台上运行的应用程序,而不需要为每个单独的平台重写或重新编译。Java 虚拟机使这成为可能,因为它了解底层硬件平台的特定指令长度和其他功能。

3. applet 和 Java 应用程序有什么区别?

回答:
  • Applet 在支持 Java 的浏览器窗口中运行。
  • Java 应用程序是可以在浏览器外部运行的独立 Java 程序。
它们都需要 Java 虚拟机 (JVM)。然而,Java 应用程序需要具有特定签名的 main 方法才能开始执行。Java applet 不需要这样的方法来开始执行。此外,Java applet 通常使用限制性安全策略,而 Java 应用程序通常使用更宽松的安全策略。

4.JDK和JRE有什么区别?

回答:
  • Java 运行时环境 (JRE)基本上是运行 Java 程序的 Java 虚拟机 (JVM)。它还包括用于运行小程序的浏览器插件。
  • Java开发工具包(JDK)是用于Java语言的全功能软件开发工具包,包括JRE、编译器和工具(例如JavaDoc和Java调试器),使用户能够开发、编译和运行Java应用程序。

5.什么是servlet?

答:Servlet 是 Java 编程语言的一个类,用于处理客户端请求并创建动态 Web 内容。Servlet 主要用于处理或存储 HTML 表单提交的数据、提供动态内容以及管理无状态 HTTP 中不存在的状态信息。

6.什么是JSP页面?

答: Java Server Page (JSP)是一个文本文档,包含两种类型的文本:
  • 静态数据,
  • JSP 元素。
静态数据可以用任何文本格式表示,例如 HTML 或 XML。JSP 是一种将静态内容与动态生成的内容混合在一起的技术。

7. 什么是指令?JSP 中有哪些类型的指令可用?

Ans:指令是当页面被编译成servlet时由JSP引擎处理的指令。指令用于设置页面级指令、从外部文件插入数据以及指定自定义标签库。指令在 <%@ 和 %> 之间定义。不同类型的指令如下所示:
  • Include 指令:用于包含文件并将文件内容与当前页面合并。
  • 页面指​​令:用于定义JSP页面上的某些属性,例如错误页面和缓冲区。
  • Taglib:用于声明页面上使用的自定义标签库。

8. System.gc() 和 Runtime.gc() 方法的作用是什么?

答:这些方法可以作为JVM触发垃圾回收的提示。通常,Java 虚拟机 (JVM) 会定期或在可用内存达到较低水平时运行垃圾收集。

9. HashMap和Hashtable有什么区别?

答:Java中HashMap和Hashtable有几个区别:
  1. Hashtable 是同步的,而 HashMap 不是。这使得 HashMap 更适合非线程应用程序,因为非同步对象通常比同步对象性能更好。
  2. Hashtable 不允许空键或空值。HashMap 允许您使用一个空键和任意数量的空值。
  3. HashMap 的子类之一是 LinkedHashMap,因此如果您想要可预测的迭代顺序(默认插入顺序),您可以轻松地将 HashMap 替换为 LinkedHashMap。如果您使用 Hashtable,这不会那么容易。

10.什么是JDBC?

答:JDBC 是一个抽象层,允许用户在数据库之间进行选择。通过 JDBC,开发人员可以用 Java 编写数据库应用程序,而不必担心特定数据库背后的细节。

11.“static”关键字是什么意思?可以重写 Java 中的私有或静态方法吗?

答: static关键字意味着可以访问变量成员或方法,而无需其所属类的实例。用户无法重写Java中的静态方法,因为方法重写是基于运行时的动态绑定,而静态方法在编译时永久绑定。静态方法不与类的任何实例关联,因此这个概念不适用。

12.处理异常时finally块的意义是什么?

答案:无论是否抛出异常,finally块都会被执行。即使没有catch语句并且发生异常。最后要提到的是,finally块用于释放 I/O 缓冲区、数据库连接等资源。

13. Java中异常和错误有什么区别?

答: 错误是程序代码无法处理的严重情况。 异常是可以由程序代码处理的异常情况。

14. Java 中的对象什么时候可以进行垃圾回收?

答:当 Java 对象对于当前使用它的程序变得不可用时,它就会受到垃圾回收的影响。

15.什么是迭代器?

答:Iterator接口提供了许多可以迭代任何集合的方法。每个 Java 集合都包含一个返回Iterator实例的Iterator方法。迭代器可以在迭代期间从底层集合中删除元素。

16. 什么是引用传递和值传递?

回答:
  • 当一个对象按值传递时,意味着传递了该对象的副本。这样,即使对该对象进行了更改,也不会影响原始值。
  • 当一个对象通过引用传递时,意味着传递的不是该对象,而是该对象的引用。这样,外部方法所做的任何更改也会反映在所有地方。

17.什么是Java小程序?

答:Java applet 是一种可以包含在 HTML 页面中并在支持 Java 的客户端浏览器中执行的程序。Applet 用于创建动态和交互式 Web 应用程序。

18.HashMap在Java中如何工作?

答:Java中的HashMap存储的是键值对。HashMap需要一个哈希函数,使用hashCodeequals方法在集合中设置和检索元素。当调用put方法时,HashMap计算键的哈希值并将该对存储在集合中适当的索引处。如果该键存在,则其值将更新为新值。HashMap 的一些重要特征是其容量、负载因子和阈值大小变化。

19. Java Collections Framework 有哪些主要接口?

答: Java 集合框架是一组设计好的接口和类,支持对对象集合的操作。Java 集合框架中的主要接口有:
  • 集合代表一组对象,称为其元素。
  • Set是不能包含重复元素的集合。
  • 列表是可以包含重复元素的有序集合。
  • Map是将键映射到值的对象,并且不能包含重复的键。

20.Java支持哪些数据类型?什么是自动装箱和拆箱?

答:Java编程语言支持以下八种基本数据类型:
  • 字节
  • 短的
  • 整数
  • 长的
  • 漂浮
  • 双倍的
  • 布尔值
  • 字符
自动装箱是 Java 编译器在基本类型及其相应的对象包装类之间执行的自动转换。如果变换方向相反,则此操作称为拆箱。感谢您的阅读,祝您技术面试顺利!

了解多种编程语言的好处

来源:Dev.to 就我个人而言,我坚信每个开发人员都应该了解不止一种编程语言。换句话说,如果我们谈论编程语言,那么开发人员必须是通晓多种语言的。喝咖啡休息#58。 Java 开发人员应该了解的 20 个重要面试问题。 了解多种编程语言的好处 - 2

主要和次要语言

为了让事情变得更容易,让我澄清本文中使用的一些术语。我相信每个开发人员都应该有一种他喜欢的语言。我称这种语言为主要语言。我将把除主要语言以外的任何语言称为辅助语言。当然,开发人员在其职业生涯中可能会改变他的主要语言(不止一次)。这可以。解释这一点的原因有很多。

专家

在关于多语言开发人员的讨论中,经常有人认为,开发人员掌握第二语言的知识是以不太精通其主要语言为代价的。这一想法的支持者认为学习每种新语言都需要时间,而这次你不能再花时间来获取你的主要语言的知识。这种想法对我来说似乎是错误的。我看到另一个类比:运动。众所周知,参加一项运动可以提高您在另一项运动中的表现。当然,你可以在这两项比赛中赢得金牌,而飞镖不太可能让你成为更好的游泳运动员。另一方面,如果您是攀岩运动员,那么瑜伽将帮助您发展灵活性和平衡性。因此,练习瑜伽会让你成为比不练习瑜伽更好的登山者。我认为学习每一种额外的语言通常会提高你所知道的其他语言的技能。

更广泛的工具

此外,了解多种编程语言可以极大地提高您作为开发人员的能力。它拓宽了你的视野,让你从不同的角度看待某些事情。让我们举一个日常生活中的例子。如果您曾经使用过螺丝刀,那么您就会熟悉十字头螺钉。乍一看,所有的十字头螺丝都是一样的,似乎都可以用一把螺丝刀拧紧。是的,有时您很难拧紧或拧松某些螺丝,但一般来说一把螺丝刀就足够了。喝咖啡休息#58。 Java 开发人员应该了解的 20 个重要面试问题。 了解多种编程语言的好处 - 3但有一天,您走进一家工具店,看着那些漂亮的螺丝刀,发现有不同类型的十字螺丝刀。您发现已有的螺丝刀是十字螺丝刀 (PH),并决定购买它的孪生姐妹螺丝刀 - 米字螺丝刀 (PZ)。然后突然发现,对于某些螺钉,一种更适合,而对于另一些螺钉,则另一种更适合。它们看起来相同,但不可互换。(如果您想知道螺丝刀上的字母 PH 和 PZ 是什么意思 - 现在您知道了)。有了更多的知识和额外的工具,下次需要拧紧十字头螺钉时,您将能够做得更好。编程语言也是如此。

您无需为额外的知识付费

因此,我个人并不认为学习额外的编程语言有什么价值。您在两种语言上都同样出色吗?可能不是,但这不太可能是您的目标。您对您的母语有新的了解吗?我对此绝对确定。了解一门新语言将揭示它们之间的差异。这反过来又会唤醒你的好奇心。您会想知道为什么新语言的处理方式有所不同以及它们的作用。最后,我举一个生活中的例子。我使用了一种用 Python 编写的命令行工具。每次我在新机器上安装这个工具时,都会出现问题,并且随着每次更新,问题的数量都会增加。如果你的工具箱里有 Go,你会立即注意到它在这种情况下的优势。Go 允许您将其工件编译成独立的二进制文件。您可以确定,编译后,二进制文件将在您为其编译的每台机器上运行。所以我将 Python CLI 移植到 Go 上。有了这个新版本,我不再需要担心更改运行时或第三方依赖项。这是为任务选择最合适工具的一个很好的例子。为了能够进行选择,您需要成为一名多语言开发人员。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION