本文共 8967 字,大约阅读时间需要 29 分钟。
我报考的专业是085400电子信息(计算机技术),复试科目是02103程序设计基础,包括计算机网络、数据库、操作系统等计算机核心课程。
在初试考完后,如果觉得自己考的还可以就要赶紧准备复试了,有少部分同学初试分数很高,但是被其他同学复试逆袭的。建议初试完就积极准备复试,去所报考的学校官网查看导师信息,选择1-3位自己心仪的导师,等初试分数一出来就立即发邮件联系导师。2021年受疫情影响复试方式为网络复试,需要准备双机位在腾讯会议上进行复试。复试包括以下四个环节(每个环节5分钟,时间一到老师自动退出会议):
下面是我备考时准备的一些问题及答案
我选择的是Java,下面都是关于Java的问题
我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable接口,然后调用Collections.sort(List)方法进行排序,另一种方法是类不实现Comparable接口,而在排序时使用Collections.sort(List, Comparator)方法,并实现其中的Comparator接口。
用“==” ,比较的是地址,若两个引用对象的地址相同,则相等。
Java集合框架(Java Collections Framework, JCF) 是为表示和操作集合而规定的一种统一的标准的体系结构。
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
ArrayList的底层是一个动态的数组,数组的长度可以根据实际存储元素数量的增加而动态增长。
LinkedList底层是链表数据结构。LinkedList 底层的数据结构是基于双向循环链表的,且头结点中不存放数据。
LinkedListsites = new LinkedList ();
没有,Java中用类替代了C语言中的结构体。
类名前被final修饰的类不能被继承,父类中声明为 private 的方法,不能够被继承。
List和set都是接口。List常用的实现类有ArrayList LinkedList 和Vector. Set有三个具体实现类,分别是散列集HashSet.链式散列集LinkedHashSet和树形集TreeSet
(1)C语言是面向过程的语言,执行效率高;Java是面向对象的语言, 执行效率比C语言低(2)C语言不能跨平台;java可以跨平台直接移植,只要有安装Java虚拟机(JVM)就可以了(3)语法不同;(4) 单文件的编译时间java比C语言快;(5) C语言可以直接操作内存,java不能直接操作;(6) C语言可以封装动态库,java不行;(7) C语言有指针,java没有指针;(8) C语言可以直接操作串口,java需要第三方jar包支持;
1. 编写带有native声明的方法的java类
2. 使用javac命令编译所编写的java类 3. 使用javah -jni java类名生成扩展名为h的头文件 4. 使用C/C++实现本地方法 5. 将C/C++编写的文件生成动态链接库
继承 Thread 类;实现 Runnable 接口;实现 Callable 接口;使用 Executors 工具类创建线程池。
使用synchronized关键字。由于每个java对象都有一个内置锁,用synchronized修饰方法或者代码块时,内置锁会保护整个方法或代码块,要想执行这个方法或者代码块必须获得其内置锁,运行时会加上内置锁,当运行结束时,内置锁会打开。
定义一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。如:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序
public static> T maximum(T x, T y, T z)
This:代表对象,就是所在函数所属对象的引用。
(1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。
用static final 修饰变量
static是关键字,可以修饰变量,方法,代码块
1.用static修饰的变量,为静态变量,也称为类变量,可以通过类和对象来访问 2.用static修饰的方法,是静态方法,静态方法只能访问其他的静态成员,静态方法里没有this关键字
可以调用父类中的构造方法,必须写在子类构造方法的第一行,如果父类的构造方法是无参的,可以不写,如果父类没有无参数的构造,必须要写super。
为了避免相同类名而发生覆盖的情况,把所有java程序保存在各自的目录里面,而该目录就是包。包的本质实际上就是一个文件夹。
包的作用: Java包用于对类和接口进行分类,以便更好地维护它们。 Java包提供访问保护。 Java包消除命名冲突。
1.public 公共的,所有人都可访问
2.private 私有的,只能通过类中成员函数访问,类外不允许访问。 3.protect 保护的,对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问。 4.default 包访问权限,在自己包内可以随意访问。
多态的前提条件有三个:
•子类继承父类 •子类覆盖父类的方法 •父类引用指向子类对象 new谁就调用谁的方法,引用是谁,就用谁的成员和静态。 多态性:父类引用子类对象时,调用子类中重写后的方法,Java 在运行时能根据对象的不同产生不同的结果。
向上转型:把子类的对象赋值给父类的变量。(屏蔽掉子类中特有的方法)
向下转型:把父类的变量转换回子类的变量。(向下转型可能有风险,java要求必须要写强制类型转换)
抽象方法:使用abstract来修饰,不能有方法体,直接用分号结束即可。(只声明不实现)
抽象类:如果一个类中有抽象方法,这个类必须是一个抽象类。 特点: 抽象类不可以创建对象。 抽象类的子类,必须重写父类中的抽象方法,否则子类也是抽象类。抽象类中可以有正常的方法。
使用interface来声明,接口实际上是一种特殊的抽象类,接口中的方法都是抽象方法,接口中的所有变量都是全局静态常量。Java类只能单继承,通过接口可以多实现(implement)。
接口的作用:(优点) 1.可以实现多态性 2.可以把很多不相关的内容进行整合 3.有利于代码的规范和维护 4.能够保证代码的安全和严密
在Java中所有的类都要继承object,是所有类的根,我们写的类即使不写继承关系,也都默认会继承object。
“= =”:默认判断的是两个对象的内存地址是否一致,常用于基本数据类型的判断。
Equals:如果没有对equals方法进行重写,则比较两者是否指向同一个对象;不能用作基本数据类型的比较;可以对equals进行重写,比如String类对equals方法进行了重写,用来比较指向的字符串内容是否相等。
异常分为:
编译时异常:在程序编译时就能发现异常。 运行时异常:编译能够通过,在程序运行时发现异常。
1.try…catch(try中写尝试执行的代码。Catch中写处理异常的代码)
2.throws:表示方法准备要扔出来一个异常 3.throw:表示向外抛出异常
会执行,在return 前执行
Spring是一个开源框架,降低Java开发的复杂性
Spring Boot是在Spring的基础上面搭设的框架,目的是为了简化Spring项目的搭设和开发过程。使用 Spring Boot 来开发项目则只需要非常少的几个配置就可以搭建起来一个 Web 项目,并且利用 IDEA 可以自动生成。
JVM是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。
JRE包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类。 JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。
如果两个对象相等,则hashcode一定也是相同的。两个对象相等,对两个对象分别调用equals方法都返回true。两个对象有相同的hashcode值,它们也不一定是相等的。
使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。
HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
两者都可以暂停线程的执行
类的不同:sleep() 是 Thread线程类的静态方法,wait() 是 Object类的方法。 是否释放锁:sleep() 不释放锁;wait() 释放锁。 用途不同:Wait 通常被用于线程间交互/通信,sleep 通常被用于暂停执行。 用法不同:wait() 方法被调用后,线程不会自动苏醒,需要别的线程调用同一个对象上的 notify() 或者 notifyAll() 方法。sleep() 方法执行完成后,线程会自动苏醒。或者可以使用wait(long timeout)超时后线程会自动苏醒。
抽象类中不一定要有抽象方法。 在编程语句中用 abstract 修饰的类是抽象类。
不能,抽象类是用来被继承的,使用final修饰了就不能被继承了。
数组转 List ,使用 JDK 中 java.util.Arrays 工具类的 asList 方法;List 转数组,使用 List 的toArray方法。
Vector、Hashtable、ConcurrentHashMap、Stack
不是一个集合,它是一种用于访问集合的方法。迭代器的基本操作是 next 、hasNext 和 remove。
ArrayListsites = new ArrayList (); Iterator it = sites.iterator(); while(it.hasNext()) { System.out.println(it.next()); }
序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。 序列化的实现: 实现Serializable接口,创建ObjectOutputStream序列化流,调用writeObject方法,写出对象。 反序列化流的实现: 实现Serializable接口,创建 ObjectInputStream 反序列化流,调用 readObject 方法,读取对象。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
1、HashMap中元素是没有顺序的;TreeMap中所有元素都是有某一固定顺序的。
2、HashMap继承AbstractMap类,是基于hash表实现的;TreeMap继承SortedMap类,是基于红黑树实现的。
Date date1; Date date2;
1.Date的compareTo()方法来比较大小,compareTo()方法的返回值,date1小于date2返回-1,date1大于date2返回1,相等返回0 2.Date自带的before()或者after()方法比较
数组类型[ ] 数组名; 数组类型 数组名[ ];
type[][] typeName = new type[typeLength1][typeLength2];
for循环适用于已知循环次数,while循环适用于未知循环次数的时候
Java 中支持带标签的 break 和 continue 语句,作用有点类似于 C 和 C++中的 goto 语句
工厂模式是 Java 中最常用的设计模式之一。属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
方法区、堆、java栈、pc寄存器、本地方法栈
不可以,必须是true或者false这样的boolean值。
接口不能实例化
可以不声明泛型类型,默认是object类型
确保类在内存中只有一个对象,并且该对象由类自动创建并且对外提供;
//饿汉式public class Student { //私有构造函数 private Student() { } //创建私有静态类变量并new赋值 private static Student s = new Student(); //创建公有静态方法 getXxx,内部返回私有静态类变量 public static Student getStudent() { return s; }}
1.首先要创建一个类继承Thread类并重写run()方法;
public class MyThread1 extends Thread{ @Override public void run() { for(int i=0;i<500;i++) { System.out.println("hello---"+i+"-----run"); } }}
2.建立测试类并通过start()方法启动线程;
public class Test1 { public static void main(String[] args) { // 创建线程类对象 MyThread1 mt1 = new MyThread1(); mt1.start(); for(int i=0;i<500;i++) { System.out.println("-----main"+i+"-----"); } }}
public int 函数名(int m){ int count = 0; int k = 0; while (m>0) { k=m%10; If (k == 2) count++; m = m/10; } return count;}
public double avg( double [] a) { double sum = 0; for( int i = 0;i
详见: .
希望能对大家有所帮助,祝愿大家成功上岸!
转载地址:http://ysyki.baihongyu.com/