【JAVA】计算机软件工程人工智能研究生复试资料整理

1、JAVA
2、计算机网络
3、计算机体系结构
4、数据库
5、计算机租场原理
6、软件工程
7、大数据
8、英文 自我介绍

1. Java

1. == 和 equals的区别

比较基本数据类型是比较的值,引用数据类型是比较两个是不是同一个对象,也就是引用是否指向同
一个对象,地址是否相同,equals本质上也是
,但是可以重写这个方法,比如String和Integer类。

2. 为什么重写equals要重写hashcode?

我个人的理解是,Hash比equals方法的开销要小,速度更快,所以在涉及到hashcode的容器中(比如
HashSet),判断自己是否持有该对象时,会先检查hashCode是否相等,如果hashCode不相等,就会
直接认为不相等,并存入容器中,不会再调用equals进行比较。而hashcode的默认方法是根据内存地
址获得的,这样就会导致,即使该对象已经存在HashSet中,但是因为hashCode不同,还会再次被存
入。
因此要重写hashCode保证:如果equals判断是相等的,那hashCode值也要相等。

3. 什么是拆箱和装箱?

我理解的就是基本类型和包装类型的相互转换:
装箱就是基本数据类型可以直接赋值给包装类型,也就是Object变量
拆箱就是包装类型也可以自动转化为基本数据类型进行赋值或者比较

4. final类有什么特点?

  1. 不可以被继承
  2. final修饰的方法不可被重写
  3. final修饰的变量:基本数据类型值不可修改,引用数据类型指向不可发生变化

5.谈谈final、finally和finalize的区别

final是修饰成员变量、类、方法,表示不可再改变
finally是处理异常的关键字,表示最后执行
finalize是Object类的一个方法,在垃圾收集器执行的时候会执行被回收对象的这个方法,可以覆
盖此方法提供垃圾收集时的其他资源回收,例如文件关闭 等等。

6.垃圾回收

  1. GC是什么?为什么要有GC?
    GC时垃圾收集的意思,Gabage Collection。内存处理是开发人员容易出现问题的地方,忘记或者错误
    地内存回收会导致程序或者系统的不稳定甚至崩溃,Java提供的垃圾回收机制可以自动检测对象是否超
    过作用域从而达到自动回收的目的。
  2. 垃圾回收机制
    Java垃圾回收机制:不需要显示的去释放一个对象的内存,而是由JVM自动机型管理。在Jvm中有一个
    低优先级的垃圾回收线程。在正常情况下是不会执行的,只有在虚拟机空闲时,或者堆内存不足时会触
    发执行,扫描那些没有被任何引用的对象,将它们添加到要回收的集合中,然后进行回收操作。
  3. 如何判断一个对象是否存活?GC对象的判断方法?
    1、 引用计数法:给每一个对象都设置一个引用计数器,当有一个地方引用这个对象时,则
    count+=1,引用失效时,count-=1,当count=0时,说明此对象没有被其他对象引用,也就是死
    对象。将会被GC回收。
    简单,但会出现循环引用,即: A引用B,B引用A。
    2、可达性分析:GC_roots作为对象的起始点,从这些节点开始向下搜索,走过的路径称为引用链,
    当一个对象到 GC Roots 没有任何引用链相连时,则证明此对象不可用的
    在这里插入图片描述

上图中,Object1~Object4都可以被GC Root访问到,而Object5~Object7都不可以被访问到,这也就是说。也就是说,Object5、6、7这三个对象就是不可达的,下次垃圾回收的时候,可能就会被回收掉。
其实并不是所有的对象都可以作为GC Roots的对象,只有下列的对象可以作为GC Roots的对象。

  • 虚拟机栈(栈帧中的本地变量表)中引用的对象
  • 方法区中类静态属性引用的对象
  • 方法区中常量引用的对象
  • 本地方法栈中JNI(即一般说的Native方法)引用的对象

既然是引用计数法,那肯定就有各种引用,下面来说说一些引用。

  • 引用:指在程序代码之中普遍存在的,类似 Object obj = new Object() 这类的引用,只要强 引用还存在,垃圾收集器永远不会回收被引用的对象
  • 软引用:用来描述一些还有用但并非必需的对象。对于软引用关联着的对象,在系统将要发生内存 溢出异常之前,将会把这些对象列进回收范围之中进行第二次回收。如果这次回收还没有足够的内存,才会抛出内存溢出异常。在JDK1.2之后,提供了SoftReference类来实现软引用
  • 弱引用:用来描述非必需对象,但是他的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。在JDK1.2之后,提供了WeakReference类来实现弱引用
  • 虚引用:也被称为幽灵引用或者幻影引用。它是最弱的一种引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。在JDK1.2之后,提供了PhantomReference类来实现虚引用。供对象被finalize之后,执行指定的逻辑的机制(cleaner)

7. 关键字native

一个Native Method就是一个java调用非java代码的接口。这个接口写在java中,实现方式是用其他语
言,eg: C或C++
native不可与abstract一起使用,可以重写。
可以将native方法比作Java程序同C程序的接口,其实现步骤:

  • 1、在Java中声明native()方法,然后编译;
    1. 用javah产生一个.h文件;
    1. 写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK 带的jni.h文件);
    1. 将第三步的.cpp文件编译成动态链接库文件
    1. 在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以 在Java中被访问了

6、集合

  • Set如何区分重复与否?
    使用equals,而不是==
  • 当向集合Set中增加对象时,首先集合计算要增加对象的hashCode码,根据该值来得到 一个位置用来存放当前对象。 如果在该位置没有一个对象存在的话,那么集合Set认为该对象在集合中不存在,直接 增加进去。 如果在该位置有一个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象 进行equals方法比较。 如果该equals方法返回false,那么集合认为集合中不存在该

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470552.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第51天 | 139.单词拆分 + 多重背包理论基础 + 背包问题总结

今日任务 139.单词拆分 关于多重背包,你该了解这些! 背包问题总结篇! 139.单词拆分 - Medium 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你一个字符串 s 和一个字符串列表 wordDict …

Linux中sigaction函数和SIGCHLD信号的使用

sigaction函数: 函数说明:注册一个信号处理函数 函数原型:int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 函数参数: signum:捕捉的信号act:传入参数,…

Flutter Android开发 梳理Google Material Design颜色体系

前言 做安卓开发(Kotlin语言),Flutter开发的人员应该都听说过谷歌一直推崇的Material Design,而Material Design Color是其推崇的颜色体系,具体来说,Material Design Color是一套旨在帮助设计师和开发者创…

洛谷_P1781 宇宙总统_python写法

这道题如果去比较数字的大小是不行的,因为位数太多了,所以就想到用字符串来比较,字符串比较也有讲究,比如说数字长度越长说明这个数字越大,对于相等长度的数字,我们只需要去比较每一位的数字,只…

Windows11通过SMB映射NAS网络驱动磁盘

环境 NAS:威联通TS-416 操作系统:Windows11 第一步 连接NAS winr 打开运行,输入NAS局域网IP地址,按照如下的格式输入 然后输入NAS的账号和密码就可以通过SMB连接到NAS了 第二步 映射网络驱动器 举个栗子:右键Stora…

【Linux系统编程】25.mmap、munmap

目录 mmap 参数addr 参数length 参数prot 参数flags 参数fd 参数offset 返回值 保险使用方式 munmap 参数addr 参数length 返回值 测试代码1 测试结果 使用注意事项 测试代码2 测试结果 测试代码3 测试结果 匿名映射 测试代码4 测试结果 mmap 将一个指…

可变参数(c/c++)

目录 一、C语言版本 二、C的实现方法 2.1数据包 2.2sizeof...运算符 2.3可变参数模板的使用 2.4emplace_back() 有时候我们在编写函数时,可能不知道要传入的参数个数,类型 。比如我们要实现一个叠加函数,再比如c语言中的printf,c中的emp…

Go语言每日一练——链表篇(九)

传送门 牛客面试笔试必刷101题 ----------------链表相加(二) 题目以及解析 题目 解题代码及解析 解析 这一道题主要是要对链表相加的过程进行模拟,虽然思路不难但是细节出比较多,这里博主的思路主要是先将两个链表反转过来然后以Head1为基础来模拟…

C语言:指针的基础详解

目录 1. 内存 2. 取地址& 3. 指针变量 4. 解引用 4.1 *解引用 4.2 []解引用 4.3 ->解引用 5. 指针变量的大小 5.1 结论 6. 指针运算 7. void* 指针 8. const修饰指针 8.1 const修饰变量 8.2 const修饰指针变量 8.3 结论 9. 野指针 9.1 为什么会出现野指…

[嵌入式系统-15]:RT-Thread -1- 简介与技术架构

目录 一、RT-Thread简介 1.1 简介 1.2 功能特点 1.3 发展历史 1.4 应用场合 1.5 与Linux的比较 1.6 ​​​​​​​RT-Thread优缺点 二、技术架构 2.1 分层架构​编辑 2.2 功能组件 2.3 应用程序接口RT-Thread API 2.4 应用程序接口:RT-Thread API、POS…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Navigation组件 鸿蒙(HarmonyOS)项目方舟框架&#…

Java图形化界面编程——AWT概论 笔记

2.3 Container容器 2.3.1 Container继承体系 Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;S…