牛客面试题(1)

1、不能用来修饰interface的有(A,C,D)

A: private

B: public

C: protected

D: static

因为接口需要被实现,所以必须能公开,private和protected不合适,private同类有效,protected 对同类,同一包,不同包的之类有效。

static 关键字不能用来修饰接口、类,只能用来修饰方法、变量等。

2、TCP和UDP的特点和区别

TCP:

提供可靠的面向连接的字节传输协议。

TCP的三次握手,简历可靠的连接

流量控制和拥塞控制:tcp采用滑动窗口讲行流量控制,用拥塞窗口的速率调整算法来进行拥塞控制。

UDP

提供不可靠的无连接传输服务,使用ip报文传输,结构简单。

没有确认机制,不对报文排序,没有反馈机制进行流量控制、没有超时机制,丢包不重发

优点:报头开销小。无连接,延迟小

3、顺序存储和链式存储特点

顺序

存储密度大,存储空间利用率高,缺点:插入和删除元素不方便。

链式

插入和删除方便,使用灵活,缺点:存储密度低,空间利用率低。

4、图的应用算法有:(ACD)

A: 克鲁斯卡尔算法

B: 哈夫曼算法

C: 地杰斯特拉算法

D: 拓扑排序算法

5、输出三叉树

① 三叉树的水平输出

image-20200909102812196

② 三叉树的垂直输出

image-20200909222332240

6、协议中的各个默认端口

协议端口
SOCKS1080
HTTP 代理端口80/8080/3128/8081/9080
HTTPS443/TCP 443/UDP
telnet23/TCP
FTP21/TCP
SSH/SCP22/TCP
Oracle数据库1158

7、采用轮转法调度是为了(B)

A: 优先级较高的进程得到及时调度

B: 多个终端都能够得到系统的及时响应

C: 先来先服务

D: 需CPU资源最少的进程先做

牛客网

轮转法调度:每个进程将得到小单位的CPU时间(时间片),通常为10-100毫秒。时间片用完该进程将被抢占并插入就绪队列末尾。所以目的是为了多个终端都能得到时间片,而每个终端系统的及时响应,B正确

​ 关于优先级线程,分为两种。一静态优先权是在线程创建时确定,会产生“饥饿”问题,优先级低的可能永远不会得到运行;动态优先权随着进程的推进而改变调整。轮转法使得进程使用完时间片后插入就绪队列末尾,等待继续抢占时间片。A错误。

​ 时间片轮转的优劣由时间片的时长决定。如果时间片太短导致各个进程频繁切换,增加了系统开销;反之时间片太长等同于先来先服务。轮转调度的目的不是先来先服务。C错误

​ 需CPU资源最少的进程先做属于“短作业优先”调度算法。D错误

8、系统的主要功能()

C: 处理机管理、存储器管理、设备管理、文件管理

操作系统用来管理计算机资源,是硬件和用户之间的接口。
想一下你的电脑有什么硬件资源?CPU,内存条,硬盘,显示器鼠标和键盘,对应的就是处理机管理、存储器管理、文件系统、设备管理。

牛客网

操作系统的五大管理功能: (1)作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等; (2)文件管理:又称为信息管理; (3)存储管理:实质是对存储“空间”的管理,主要指对主存的管理; (4)设备管理:实质是对硬件设备的管理,其中包括对输入输出设备的分配、启动、完成和回收; (5)进程管理:实质上是对处理机执行“时间”的管理,即如何将CPU真正合理地分配给每个任务。

9、以下哪几种Java原生数据结构是排序的:(B)

A: LinkedHashMap

B: TreeMap

C: ConcurrentTreeMap

D: HashSet

a无序 c不是原生 d无序

10、树的概念

①、二叉树

二叉树是n个有限元素的集合,该集合或者为空,或者由一个称为根的元素及两个互不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。

完全二叉树

若二叉树的高度为h,除第h层外,其他各层(1~h-1)的节点数都达到了最大个数,第h层有叶子结点,都是从左到右一次排序

一维数组可以作为完全二叉树的存储结构,堆排序使用的数据结构就是完全二叉树。

image-20200909221806658

满二叉树

国际标准定义:除了叶子节点外的每一个节点都有左右子节点的二叉树

国内的定义是:除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。很显然,按照这个定义,上面的图示二叉树就不是满二叉树。

image-20200909221950560

平衡二叉树

是一颗空树或者它的节点的左右两个子树的高度差的绝对值不超过1、

image-20200909222124575

11、选项中哪一行代码可以替换题目中//add code here而不产生编译错误?()

public abstract class MyClass {
     public int constInt = 5;
     //add code here
     public void method() {
     }
}

A: public abstract void method(int a);

B: constInt = constInt+5;

C: public int method();

D: public abstract void anotherMethod(){}

AD:abstract 关键词可以修饰类和方法,abstract类可以扩展之类,但是不能直接实例化。abstract 方法不在申明它的类中实现,但必须在某个子类中重写。

B:

源文件

public abstract class MyClass {
     public int constInt = 5;
     {
          constInt = constInt + 5;
     }
     public static void main(String[] args) {
     }
}

字节码文件

public abstract class MyClass {
    public int constInt = 5;
    public MyClass() {
        this.constInt += 5;
    }
    public static void main(String[] args) {
    }
}

B选项中的int constInt 属于类非静态变量,直接使用constInt = constInt = 5; 不知道是哪个实例的;

使用{} 括起来,在初始化类的时候,会执行里面的代码,把constInt赋给this当前对象,所以对象的constInt的输出值为10.

这里为了测试,直接在abstract类中写了主函数。

C: 不是重写也不是重载,要报错。

'method()' clashes with 'method()'; both methods have same erasure. Missing method body, or declare abstract. 

12、abstract和Interface的区别?

13、mysql索引

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值