Java 工程师岗位笔试练习

Java 工程师岗位笔试练习

  • 1、单选题
  • 2、填空题
  • 3、简答题
  • 4、编程题

1、单选题

就几乎是数据结构,计算机网络的题目,期末考试那种程度的选择题
(1)二分法查找
(2)哈希表查找法
参考博客:https://blog.csdn.net/scmuzi18/article/details/77140889

2、填空题

(1)求时间复杂度
(2)根据先序中序遍历写后序
参考博客:https://blog.csdn.net/qq_44721518/article/details/118311249

(3)写出插入排序,快速排序,堆排序的通常时间复杂度
平均T复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性
插入排序 O(n2) O(n) O(n2) O(1) In-place 稳定
快速排序 O(n log n) O(n log n) O(n2) O(log n) In-place 不稳定
堆排序 O(n log n) O(n log n) O(n log n) O(1) In-place 不稳定
参考博客:https://blog.csdn.net/YUBANGSHUANGYUER/article/details/114377566

(4)关系数据模型的(三要素? )是关系数据结构、——、——
关系模型的三要素:数据结构,操作集合,完整性约束。
参考博客:https://blog.csdn.net/weixin_71515777/article/details/125100951

3、简答题

(1)翻译一段英文
(2)什么是死锁?怎么避免死锁?
参考博客:https://blog.csdn.net/Wangsir1122/article/details/108792735

1、什么是死锁
多个进程或线程互相等待对方的资源,在得到新的资源之前不会释放自己的资源,这样就形成了循环等待,这种现象被称为死锁。

2、产生死锁的四大必要条件
资源互斥:资源只有两种状态,只有可用和不可用两状态,不能同时使用,同一时刻只能被一个进程或线程使用。

占有且请求:已经得到资源的进程或线程,继续请求新的资源,并持续占有旧的资源。

资源不可剥夺:资源已经分配进程或线程后,不能被其它进程或线程强制性获取,除非资源的占有者主动释放。

环路等待:死锁发生时,系统中必定有两个或两个以上的进程或线程组成一条等待环路。

注意:死锁一旦产生基本无解,现在的操作系统无法解决死锁,因此只能防止死锁产生。

3、防止死锁产生的方法

破坏占用且请求条件:采用预先静态分配的方法,进程或线程在运行前一次申请所有资源,在资源没有满足前不投入运行。
缺点:系统资源会被严重浪费,因为有些资源可能开始时使用,而有些资源结束时才使用。

破坏不可剥夺条件:当一个进程或线程已经占有一个不可剥夺的资源时,请求新资源时无法满足,则释放已经占有的资源,一段时间后再重新申请。
缺点:该策略实现起来比较复杂,释放已经获取资源可能会导致前一阶段的工作失效,反复的申请释放资源会增加系统开销,占用CPU和寄存器、内存等资源。

破坏循环等待条件:给每个资源进行编号,进程或线程按照顺序请求资源,只有拿到前一个资源,才能继续请求下一个资源。
缺点:资源的编号必须相对稳定,资源添加或销毁时会受到影响。

算法:银行家算法

(3)person表,写出优先输出30-40年龄段的人的信息,其他人的信息正常输出的SQL语句
方法一:
select name,age from person where age between 26 and 40
union
select name,age from person where age<=26 or age >=40;

方法二:
select name,age from person order by
case when age>=26 and age<=40 then 0 else 1 end;

(4)怎么解决TCP粘包问题
参考博客:https://blog.csdn.net/weixin_52244492/article/details/124360719

1、应用层
粘包的问题出现是因为不知道一个用户消息的边界在哪,如果知道了边界在哪,接收方就可以通过边界来划分出有效的用户消息。
一般有三种方式分包的方式:

  • 固定长度的消息;
  • 特殊字符作为边界;
  • 自定义消息结构。

2、发送方
对于发送方造成的粘包问题,可以通过关闭Nagle算法来解决,使用TCP_NODELAY选项来关闭算法。

3、接收方
接收方没有办法来处理粘包现象,只能将问题交给应用层来处理。

(5)数据库事物的概念和特性
参考博客:http://c.biancheng.net/view/7289.html
数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行,因此事务是一个不可分割的工作逻辑单元。

在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的,特别适用于多用户同时操作的数据库系统。例如,航空公司的订票系统、银行、保险公司以及证券交易系统等。

事务具有 4 个特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这 4 个特性通常简称为 ACID。

4、编程题

Leetcode三数之和

PS. 文章更新完善中…

你可能感兴趣的:(Java开发与编程,java,算法,数据结构)