java高频面试题-基础篇

1,什么叫线程的调度策略?


    线程的调度策略是操作系统内核用来决定在多线程环境下,哪个线程应该被调度执行的一种策略。调度策略的目标是最大程度地提高系统的性能和吞吐量,同时保证公平性和响应性。
    常见的线程调度策略包括:
    先来先服务(First-Come, First-Served,FCFS):按照线程到达的先后顺序进行调度,即先到达的线程先执行,适用于批处理系统。
    最短作业优先(Shortest Job First,SJF):优先执行执行时间最短的线程,适用于批处理系统。
    优先级调度:根据线程的优先级来进行调度,优先级高的线程优先执行。
    时间片轮转(Round-Robin):将CPU时间分成若干个时间片,每个线程在一个时间片内执行一定时间,然后切换到下一个线程,适用于交互式系统。
    多级反馈队列调度:根据线程的优先级和历史执行时间来动态调整线程的执行顺序,适用于复杂的多任务系统。

2,Java 线程数过多会造成什么异常?


    在Java中,线程数过多可能会导致以下异常:
    内存溢出(OutOfMemoryError):每个线程都会占用一定的内存资源,包括线程栈、线程局部变量等。当创建过多的线程时,会消耗大量的内存资源,可能导致堆内存溢出。
    过多的上下文切换:线程数过多会导致操作系统频繁进行线程的上下文切换,这会消耗大量的CPU资源,降低系统的性能。
    系统资源耗尽:每个线程都需要占用操作系统的资源,包括内核栈、线程控制块等。当线程数过多时,可能会耗尽操作系统的资源,导致系统无法正常工作。
    系统性能下降:过多的线程会导致系统的负载增加,可能导致系统响应速度下降,甚至导致系统崩溃。

3,简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别?


    事务支持:InnoDB支持事务,而MyISAM不支持事务。事务是一组数据库操作,要么全部执行成功,要么全部失败,可以确保数据的一致性和完整性。
    锁定级别:InnoDB支持行级锁定,可以提高并发性能,而MyISAM在执行读操作时会对整个表进行锁定,可能导致并发性能下降。
    外键约束:InnoDB支持外键约束,可以确保数据的一致性,而MyISAM不支持外键约束。
    全文索引:MyISAM支持全文索引,可以进行全文搜索,而InnoDB在早期版本中不支持全文索引,但在MySQL 5.6版本后开始支持全文索引。
    表级别和行级别的备份和恢复:MyISAM表的备份和恢复速度更快,而InnoDB表的备份和恢复速度相对较慢。
    数据和索引存储方式:MyISAM将数据和索引分开存储,而InnoDB使用聚集索引,将数据和索引存储在一起。

4,BLOB 和 TEXT 有什么区别?


    在MySQL中,BLOB和TEXT都是用来存储大容量数据的数据类型,但它们有一些区别:
    存储方式:
    BLOB(Binary Large Object)用于存储二进制数据,例如图像、音频、视频等。
    TEXT用于存储文本数据,例如大段的文本、文章内容等。
    最大存储大小:
    BLOB的最大存储大小取决于所使用的存储引擎,通常可以存储几个GB的数据。
    TEXT的最大存储大小也取决于所使用的存储引擎,通常也可以存储几个GB的数据。
    字符集排序规则:
    BLOB的数据是按照二进制方式排序的。
    TEXT的数据是按照字符集的排序规则进行排序的。
    是否进行字符集转换:
    BLOB不会进行字符集转换。
    TEXT会根据字符集进行转换,例如在插入和检索数据时会根据字符集进行转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值