2024年大三实习我面试过java的那些基础题

1、int i 的初始值是多少

答:int 的初始值为0

2、字节流和字符流的区别

答:

字节流字符流是两种数据处理方式,它们的主要区别在于处理的数据单位、编码方式、处理方式、适用场景以及是否使用缓冲区等方面。

  • 处理的数据单位不同。字节流以字节为单位进行数据的读写,适用于处理二进制数据,如图像、音频、视频等。字符流则以字符为单位进行数据的读写,适用于处理文本数据,如文件的读写、文本的处理等。
  • 编码方式不同。字节流处理的是字节数据,不关心数据的具体编码方式,适用于处理任意类型的数据。字符流以字符的形式读写数据,会根据指定的字符编码将字符转换为字节进行处理,通常使用Unicode编码。
  • 处理方式不同。字节流直接操作底层的字节数据,不需要进行字符编码的转换,处理效率通常比字符流高。字符流需要进行字符编码和解码,提供了更方便的字符处理功能。
  • 是否使用缓冲区不同。字节流读取的数据不经过缓冲区,而字符流经过缓冲区。
  • 适用场景不同。字节流适用于处理二进制数据,如文件的复制、网络传输等。字符流适用于处理文本数据,如网络通信中的文本传输等。

3、线程与进程的区别

答:

Java中的线程和进程是操作系统中两个不同的概念,它们在执行、资源分配、以及并发性方面有所不同。

  1. 执行和资源分配:

    • 进程:是操作系统分配资源的基本单位,每个进程拥有独立的内存空间、堆、栈、虚存空间等资源。进程在执行过程中有明确的内存单元初始入口点,并且始终拥有独立的内存地址空间。
    • 线程:是操作系统调度的基本单位,包含在进程中,是进程中的实际运行单位。线程共享进程的资源,包括内存空间和文件描述符等,这使得线程比进程更轻量级。
  2. 并发性和状态:

    • 进程:可以并发执行,但需要操作系统进行上下文切换,这通常比线程的上下文切换慢。进程的状态包括新建、就绪、运行、阻塞和销毁等。
    • 线程:由于共享同一进程的资源,线程间的上下文切换速度较快,从而提高了程序的并发性和执行效率。
  3. 创建和操纵:

    • 进程:通常由操作系统创建和管理,应用程序可以通过启动新进程来并发执行任务。
    • 线程:可以由应用程序创建和控制,通过继承Thread类或实现Runnable接口来创建线程,这使得多线程编程成为可能。
  4. 通信和同步:

    • 进程:通过操作系统提供的进程间通信(IPC)机制进行通信,如共享内存、消息传递等。
    • 线程:可以通过共享内存空间直接进行通信,使用wait()、notify()等方法实现线程间的同步和通信。

总结来说,进程和线程在Java中扮演不同的角色。进程是系统资源分配和调度的独立单位,而线程则是执行流程的基本单位,能够共享同一进程的资源并提高并发性。

4、在编写java时,定义金钱用什么类型表示

答:在Java中,对于钱这种货币类型的定义,我们通常会使用BigDecimal类型来表示。BigDecimal类型是一种精确的十进制浮点数,它可以表示任意精度的数字,避免了浮点数运算中出现的精度丢失问题,因此非常适合用来处理货币相关的计算。

5、时间复杂度和空间复杂度都是什么

答:

时间复杂度,又称时间复杂性,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1)。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。

数据库方面:

1、sql去重union和DISTINCT区别

答:

1.union一般用与表与表的连接去重,而distinct一般用于一个表中进行数据去重。
2.union可以使表中所有字段都去重,而distinct一般是用于某个字段的去重。
3.使用union前提是2个表中的字段结构要统一,而distinct则不需要

2、视图和表的区别

答:

  • 存储方式。表是实际存储数据的对象,数据以行和列的形式存储在表中。而视图并不存储数据,它只是保存了一个查询的定义。1
  • 数据来源。表中的数据可以来自多个来源,可以手动插入、更新或删除数据,也可以通过其他表进行关联操作。而视图的数据是根据特定的查询语句从一个或多个表中检索出来的,它实际上是一个虚拟表。
  • 结构定义。表具有自己的结构定义,包括列名、数据类型、约束等。视图继承了查询语句的结构,包括选择的列、条件等。
  • 更新操作。表允许直接对其进行插入、更新和删除等操作,可以修改表中的数据。而大多数情况下,视图是不可更新的,即不能对视图进行直接的插入、更新和删除操作,除非满足一些特定条件。
  • 访问权限。表具有自己的访问权限,可以对其进行授权,允许或禁止用户对表的操作。视图也可以设置访问权限,但它们是基于底层表的权限进行的。

总结来说,表是数据库中用于存储和操作实际数据的物理对象,而视图是基于查询语句而定义的虚拟表,提供了对数据的定制化访问。

3、char和varchar的区别

答:

CHARVARCHAR是两种常用的字符串数据类型,它们之间的主要区别在于存储方式和空间使用效率。

  • 存储方式。CHAR是固定长度的字符类型,必须指定一个长度,并且每个CHAR值都会占用这个长度的空间,不足的部分会用空格填充。VARCHAR是可变长度的字符类型,只需要指定一个最大长度,它会根据实际存储的字符长度来动态调整存储空间。
  • 空间使用。由于CHAR是固定长度的,所以它会占用固定的空间,无论实际存储的字符长度是多少。这可能会导致存储空间的浪费,特别是当存储的字符串长度变化很大时。VARCHAR则只会占用实际使用的空间,因此在存储短字符时,VARCHAR比CHAR更节省空间。
  • 尾部空格。CHAR类型会自动填充尾部空格,以使其长度达到定义的最大长度。而VARCHAR类型不会自动填充尾部空格。
  • 查找效率。由于CHAR是固定长度的,它的处理速度通常比VARCHAR快,因为数据库可以更快地定位到固定长度的数据块。
  • 最大长度。CHAR类型的最大长度通常是255字符,而VARCHAR类型的最大长度由最大行大小和使用的字符集确定,整体最大长度可以达到65532字节。

综上所述,选择CHAR还是VARCHAR取决于具体的应用场景和需求。如果数据长度固定且相对较短,可以考虑使用CHAR类型以获得更高的处理速度。如果数据长度可变或相对较长,或者需要节省存储空间,则应该使用VARCHAR类型。

4、左链接和内链接的区别

答:

  • 内连接(INNER JOIN):只返回两个表中匹配的记录。
  • 左连接(LEFT JOIN):返回左表中的所有记录,以及右表中匹配的记录;如果右表中没有匹配的记录,则包含 NULL
  • 右连接(RIGHT JOIN):返回右表中的所有记录,以及左表中匹配的记录;如果左表中没有匹配的记录,则包含 NULL
  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值