浙江大学计算机考研历年面试题集
计算机综合面试题目及答案
计算机综合面试题目及答案一、数据结构与算法1. 请解释什么是数据结构?数据结构是指在计算机中对数据的组织、处理和存储的方式。
它涉及到如何有效地组织和管理数据,以及如何利用数据进行各种操作和运算。
2. 请列举几种常见的数据结构?常见的数据结构包括:数组、链表、栈、队列、树、图等。
3. 请解释什么是算法?算法是用来解决特定问题的一系列步骤或规则。
它描述了如何根据输入数据经过一系列计算和处理得到期望的输出结果。
4. 请列举几种常见的算法?常见的算法包括:排序算法(如冒泡排序、插入排序、快速排序)、搜索算法(如顺序搜索、二分搜索)、图算法(如最短路径算法、拓扑排序)等。
5. 请解释什么是时间复杂度和空间复杂度?时间复杂度描述了算法执行所需的时间量级,空间复杂度描述了算法执行所需的存储空间量级。
它们用来衡量算法的效率和资源消耗情况。
二、操作系统1. 请解释什么是操作系统?操作系统是计算机系统中控制和管理硬件与软件资源的核心软件,它提供了用户和应用程序与计算机硬件之间的接口。
2. 请列举几种常见的操作系统?常见的操作系统包括:Windows、Linux、macOS、Android、iOS等。
3. 请解释什么是进程和线程?进程是操作系统中正在运行的程序的实例,它拥有独立的内存空间和资源。
线程是进程中的一个执行单元,多个线程可以共享同一个进程的资源。
4. 请解释什么是死锁?死锁是指在多线程环境下,两个或多个线程因争夺资源而造成的互相等待的状态,导致程序无法继续执行。
5. 请解释什么是虚拟内存?虚拟内存是一种操作系统的内存管理技术,它将计算机硬盘的一部分空间作为额外的存储空间来扩展主存,允许程序使用比实际可用内存更大的内存空间。
三、网络与通信1. 请解释什么是IP地址?IP地址是用于标识和定位计算机或网络设备的一组数字。
IPv4地址由32位二进制数组成,通常以点分十进制表示。
2. 请解释什么是TCP/IP协议?TCP/IP协议是互联网的基础通信协议,它包括TCP(传输控制协议)和IP(网际协议)两个部分,用于在网络上可靠地传输数据。
浙大计算机面试题库及答案
浙大计算机面试题库及答案一、算法与数据结构1. 请简述什么是最短路径算法,并列举几种常见的最短路径算法。
最短路径算法是用来寻找两个节点之间最短路径的一种算法。
常见的最短路径算法包括迪杰斯特拉算法(Dijkstra)、弗洛伊德算法(Floyd-Warshall)、贝尔曼-福特算法(Bellman-Ford)等。
2. 请解释什么是动态规划,并简要介绍动态规划的实现步骤。
动态规划是将一个大问题分解为若干个子问题,并通过保存子问题的解来降低求解复杂度的一种算法思想。
实现步骤包括定义状态、确定状态转移方程、确定初始条件和计算顺序。
二、操作系统1. 什么是进程和线程,它们之间有什么区别?进程是操作系统中资源分配的最小单位,是运行程序的载体,拥有独立的内存空间和执行环境;而线程是进程中的一个执行单元,与其他线程共享进程的资源,拥有独立的执行流程。
区别:- 进程间资源相互独立,线程间资源共享;- 进程拥有独立的地址空间,线程共享进程的地址空间;- 进程间切换开销比较大,线程间切换开销较小。
2. 请解释什么是死锁,并列举避免死锁的方法。
死锁是指系统中的进程或线程因为互相等待对方所持有的资源而无法继续执行的一种状态。
避免死锁的方法包括:资源分级法、资源有序性法、银行家算法、避免环路法等。
三、网络1. 简述HTTP和HTTPS的区别。
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,明文传输,安全性较低;而HTTPS(Hypertext Transfer Protocol Secure)是基于HTTP协议的一种安全的传输协议,通过SSL/TLS加密数据传输,保证数据的安全性。
2. 请解释什么是TCP/IP协议栈,并介绍TCP和UDP的区别。
TCP/IP协议栈是一组用于互联网中数据通信的网络协议的集合。
它由多层协议构成,包括物理层、数据链路层、网络层、传输层和应用层。
TCP(Transmission Control Protocol)是一种面向连接、可靠传输的协议,提供错误检测和重传机制,适用于对数据可靠性要求较高的场景;而UDP(User Datagram Protocol)是一种无连接、不可靠传输的协议,不提供错误检测和重传机制,适用于对实时性要求较高的场景。
计算机专业面试题目及答案大全
计算机专业面试题目及答案大全计算机专业是目前社会需求高度的专业之一,对于计算机专业的学生来说,面试是获取就业机会的重要环节。
在面试过程中,了解常见的面试题目及答案是至关重要的。
本文将提供一些常见的计算机专业面试题目及答案,帮助准备面试的学生们更好地应对面试挑战。
1. 请简要介绍一下自己。
在面试的开始阶段,面试官通常会要求求职者进行个人介绍。
当面试官提出该问题时,大家可以从以下几个方面进行回答:- 姓名:自我介绍时首先报上自己的姓名;- 教育背景:提及所就读的大学及专业信息;- 实习经验:强调与计算机专业相关的实习经验;- 技术能力:介绍自己掌握的编程语言、软件开发技能等;- 祝愿:结束时可以表达感谢并表达对面试的期待。
2. 你对计算机专业有哪些兴趣和热情?该问题旨在了解求职者对计算机专业的兴趣程度,并考察其对专业的了解程度。
面试者可以从以下几个方面进行回答:- 学术兴趣:对于计算机领域的学术研究有兴趣,并关注当前的研究热点和前沿技术;- 技术兴趣:对于特定的编程语言、软件开发、网络安全等方面表现出热情;- 创新意识:关注行业的创新和发展趋势,并希望能够为行业的进步做出贡献;- 解决问题:喜欢通过计算机技术解决实际问题,并提高工作效率。
3. 请解释什么是操作系统?操作系统是计算机系统中的核心软件,它负责管理计算机的硬件资源,提供程序运行环境,并协调各种应用软件的工作。
它是用户与计算机硬件之间的桥梁,为用户提供了友好的界面和良好的用户体验。
操作系统分为多种类型,例如Windows、Linux和iOS等。
4. 请解释什么是数据库?数据库是一个存储、管理和组织数据的系统。
它采用了结构化的方式来存储数据,并提供了方便的操作和查询方式。
常见的数据库管理系统有MySQL、Oracle和SQL Server等。
数据库在计算机专业中被广泛应用,用于存储和管理大量的结构化数据。
5. 请简要解释什么是面向对象编程(OOP)?面向对象编程是一种软件编程方法,它将现实世界的对象抽象为程序中的类,通过封装、继承和多态等概念来组织和管理代码。
2011浙江大学复试上机
1001: A+B for Matrices时间限制:1 Sec 内存限制:32 MB提交:931 解决:514题目描述This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns.输入The input consists of several test cases, each starts with a pair of positive integers M and N (≤10) which are the number of rows and columns of the matrices, respectively. Then 2*M lines follow, each contains N integers in [-100, 100], separated by a space. The first M lines correspond to the elements of A and the second M lines to that of B.The input is terminated by a zero M and that case must NOT be processed.输出For each test case you should output in one line the total number of zero rows and columns of A+B.样例输入2 21 11 1-1 -110 92 31 2 34 5 6-1 -2 -3-4 -5 -6样例输出15提示来源2011年浙江大学计算机及软件工程研究生机试真题1002: Grading时间限制:1 Sec 内存限制:32 MB提交:748 解决:189题目描述Grading hundreds of thousands of Graduate Entrance Exams is a hard work. It is even harder to design a process to make the results as fair as possible. One way is to assign each exam problem to 3 independent experts. If they do not agree to each other, a judge is invited to make the final decision. Now you are asked to write a program to help this process.For each problem, there is a full-mark P and a tolerance T(<P) given. The grading rules are: • A problem will first be assigned to 2 experts, to obtain G1 and G2. If the difference iswithin the tolerance, that is, if |G1 - G2| ≤ T, this problem's grade will be the average of G1 andG2.• If the difference exceeds T, the 3rd expert will give G3.• If G3 is within the tolerance with either G1 or G2, but NOT both, then this problem's grade will be the average of G3 and the closest grade.• If G3 is within the tolerance with both G1 and G2, then this problem's grade will be the maximum of the three grades.• If G3 is within the toleranc e with neither G1 nor G2, a judge will give the final grade GJ.输入Each input file may contain more than one test case.Each case occupies a line containing six positive integers: P, T, G1, G2, G3, and GJ, as described in the problem. It is guaranteed that all the grades are valid, that is, in the interval [0, P].输出For each test case you should output the final grade of the problem in a line. The answer must be accurate to 1 decimal place.样例输入20 2 15 13 10 18样例输出14.0提示来源2011年浙江大学计算机及软件工程研究生机试真题1004: Median时间限制:1 Sec 内存限制:32 MB提交:652 解决:168题目描述Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 17} is 15. The median of two sequences is defined to be the median of the non-decreasing sequence which contains all the elements of both sequences. For example, the median of S1 and S2 is 13.Given two increasing sequences of integers, you are asked to find their median.输入Each input file may contain more than one test case.Each case occupies 2 lines, each gives the information of a sequence. For each sequence, the first positive integer N (≤1000000) is the size of that sequence. Then N integers follow, separated by a space.It is guaranteed that all the integers are in the range of long int.输出For each test case you should output the median of the two given sequences in a line.样例输入4 11 12 13 145 9 10 15 16 17样例输出13提示1005: Graduate Admission时间限制:1 Sec 内存限制:32 MB提交:291 解决:50题目描述It is said that in 2011, there are about 100 graduate schools ready to proceed over 40,000 applications in Zhejiang Province. It would help a lot if you could write a program to automate the admission procedure.Each applicant will have to provide two grades: the national entrance exam grade GE, and the interview grade GI. The final grade of an applicant is (GE + GI) / 2. The admission rules are: • The applicants are ranked according to their final grades, and will be admitted one by one from the top of the rank list.• If there is a tied final grade, the applicants will be ranked according to their national entrance exam grade GE. If still tied, their ranks must be the same.• Each applicant may have K choices and the admission will be done according to his/her choices: if according to the rank list, it is one's turn to be admitted; and if the quota of one's most preferred shcool is not exceeded, then one will be admitted to this school, or one's other choices will be considered one by one in order. If one gets rejected by all of preferred schools, then this unfortunate applicant will be rejected.• If there is a tied rank, and if the corresponding applicants are applying to the same school,then that school must admit all the applicants with the same rank, even if its quota will be exceeded.输入Each input file may contain more thanone test case.Each case starts with a line containing three positive integers: N (≤40,000), the total number of applicants; M (≤100), the total number of graduate schools; and K (≤5), the number o f choices an applicant may have.In the next line, separated by a space, there are M positive integers. The i-th integer is the quota of the i-th graduate school respectively.Then N lines follow, each contains 2+K integers separated by a space. The first 2 integers are the applicant's GE and GI, respectively. The next K integers represent the preferred schools. For the sake of simplicity, we assume that the schools are numbered from 0 to M-1, and the applicants are numbered from 0 to N-1.输出For each test case you should output the admission results for all the graduate schools. The results of each school must occupy a line, which contains the applicants' numbers that school admits. The numbers must be in increasing order and be separated by a space. There must be no extra space at the end of each line. If no applicant is admitted by a school, you must output an empty line correspondingly.样例输入11 6 32 1 2 2 2 3100 100 0 1 260 60 2 3 5100 90 0 3 490 100 1 2 090 90 5 1 380 90 1 0 280 80 0 1 280 80 0 1 280 70 1 3 270 80 1 2 3100 100 0 2 4样例输出0 1035 6 7 2 81 4。
浙江大学复试面试题目及答案(yyy版本)
浙江大学计算机考研历年面试问题集专业部分操作系统部分:1 windows/linux使用的文件系统?windows使用的文件系统有:FAT(包括FAT12,FAT16,FAT32),CDFS,UDF,NTFS,DFS(分布式文件系统,用于windows2000/xp服务器上的网络组件)linux使用的文件系统有:ext2,ext3,FAT32 ???????2 虚拟内存?传输协调工作,并为用户提供一个统一的界面和标准的接口,用户通过这一界面实现所需要的从操作以及使用系统资源,使系统中的若干台计算机相互协作以完成共同的任务,有效控制和协调诸任务的并行执行,并向系统提供统一的,有效的接口软件集合。
网络操作系统和分布式操作系统虽然都属于管理分布在不同地理位置上的操作系统,但最大的差别是:网络操作系统工作时必须确认网址,而分布式操作系统则不必知道计算机的确切地址;分布式系统负责整个系统的资源分配,通常能够很好的隐藏系统的内部细节,如对象的物理位置,并发控制,系统故障等。
这些对用户都是透明的。
8 操作系统为什么要用驱动程序?参考912 io调度算法?此题似乎有问题,分解之:IO控制方式:程序IO方式,中断驱动IO控制方式,DMA直接存储器访问方式,IO通道控制方式磁盘调度算法:RSS(随机调度),FIFO,PRI(进程优先级调度),LIFO,SSTF(最短作业优先),SCAN (在磁盘上往复),C-SCAN(一条道路,快速返回),N-step- SCAN(一次N个记录的SCAN),FSCAN13 一个文件重命名和把它直接删除后再重新建立新文件名有何不同?1.物理地址:前者不变,后者变化2.pcb:前者只改了文件名,后者重新建立PCB14 介绍一下os的层次结构?●多数据流:文件的实际内容被当作字节流处理,在NTFS中可以为一个文件定义多个数据流;●通用索引功能:NTFS中,每个文件都有一组属性与之关联.这样,文件管理系统中文件描述的集合组织成一个关系数据库,因而文件可以建立关于任何属性的索引.20 轮转法知道么,用在什么系统?简单介绍下分时操作系统,时间片可等长——简单轮转调度,亦可不等长——多级反馈调度数据结构部分:1 介绍分治算法,回溯算法,动态规划法?弃,其余儿子节点被加入到活节点表中。
浙大计算机学院考研复试上机试题及参考答案
浙江大学计算机复试上机2005-2007(由林子整理)2005年浙江大学计算机学院考研复试上机试题及参考答案(1/5)第一题:A+B(10分) [结题]题目要求:读入两个小于100的正整数A和B,计算A+B。
需要注意的是:A和B的每一位数字由对应的英文单词给出。
输入格式:测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔。
当A和B同时为0时输入结束,相应的结果不要输出。
输出格式:对每个测试用例输出1行,即A+B的值。
输入样例:one + two =three four + five six =zero seven + eight nine =zero + zero =输出样例:39096#include <>#include <>#include <>#include <>int main(void){const char data[12][6] = {"zero", "one","two", "three", "four","five", "six", "seven", "eight", "nine", "+", "="};unsigned a, b; /* 转换后的表达式参数,如a+b(123+456) */unsigned i, j, k; /* 临时变量,作为下标*/ char str[100]; /* 输入字符串,足够大容量*/ char temp[6]; /* 临时字符串,用于检索数字,如"one"->'1' */char result[30]; /* 转换后的表达式参数,如"123+456=" */a =b = i = j = k = 0; /* 初始化变量 */memset(str, 0, sizeof(str));memset(temp, 0, sizeof(temp));memset(result, 0, sizeof(result));gets(str); /* 获取输入字符串,不能使用scanf,因为有空格 */for(i=0, k=0; i<strlen(str); ++i){for(j=0;!isspace(str[i])&&i<strlen(str);++i,++j) /* 提取一个单词 */temp[j] = str[i];temp[j] = 0; /* 字符串结束标记 */for(j=0; j<12; j++) /* 把这个单词转换为数字 */if(strcmp(temp, data[j]) == 0){if( j <= 9 ) result[k++] = j + '0';if( j == 10 ) result[k++] = '+';if( j == 11 ) result[k++] = '=';break; /* 找到匹配数字就不必再搜索了 */ }result[k] = 0; /* 字符串结束标记,result形式"123+456=" */sscanf(result,"%d+%d=",&a,&b); /* 用sscanf来获得a,b的值 */if( a==0 && b==0 ) break; /* A,B同时为零则退出程序 */else printf("%d\n", a + b); /* 打印输出 A + B 的数值 */}while(1);return 0;}2005年浙江大学计算机学院考研复试上机试题及参考答案(2/5)第二题:谁是开门关门的人?(10分)题目要求:每天第一个到机房的人要把门打开,最后一个离开的人要把门关好。
浙大研究生面试题目及答案
浙大研究生面试题目及答案1.PID 中P,I,D 分别什么意思,控制作用什么?答:分别表示比例,积分,微分。
比例作用:对偏差信号进行放大形成控制信号,比例作用越大,稳态偏差越小,响应速度也越快,但是稳定性会降低积分作用:对偏差信号进行积累产生控制信号,因而稳定的系统最终偏差一定为零。
但是会减小相角域度,使系统的稳定性降低。
微分作用:反应偏差信号的变化率,具有预测性,因而能加快响应速度,提高系统的稳定性,但是对噪声过于敏感,抗干扰能力差。
2.分程控制定义举例答:一个调节器去控制一个以上的阀,并按照控制信号的不同区间去操作不同的阀门。
分程控制中,阀的开闭分为异向和同向两种,同向可以满足增大可调比的要求,而异向则是满足特殊要求。
举例:蒸汽压力调节系统,锅炉产生10MPa的蒸汽压力,生产需要4MPa的平稳蒸汽压力,如果直接选择比较大的口径阀门,阀门容易产生畸变,因而用两个孔径较小的阀门同向分程控制。
3.计算机控制系统的组成答:主要由工控机和生产过程两部分组成。
工控机主要由:人机接口,主机板,内外部总线,磁盘系统,通信接口(USB,RS-232C);生产过程:执行机构,测量变送装置,被控对象。
4.设计控制系统要考虑那些问题答:1.了解被控对象特性2.选择被调节量3.选择调节量4.确定衡量标准5.确定控制规律6.选择调节阀5. 简单说说选择控制系统,并与单回路比较答:选择控制系统,在生产过程中一般起保护作用。
选择控制系统中一般有两个变量,一个是技术指标变量,这是用来形容生产质量的;另外一个是限值变量,当生产过程中,限值变量在一定的范围内,生产过程安全,当限制变量超过这个过程就有发生事故的危险,选择控制系统就会有相应的措施解决问题。
一般分为开关选择控制系统和连续选择控制系统。
正常情况下与单回路没有很大区别,当限值变量超过临界值就不同了。
6.0~20mA 的一般能否改成两线制答:不能,两线制,即电源线和信号的输出线合并起来,不仅节省电缆,而且布线方便,且大大有利于生产安全,因为减少一个通往危险现场的导线,就减少了一个窜进危险火花的门户。
浙大计算机面试题及答案
浙大计算机面试题及答案一、数据结构与算法1. 请解释什么是数据结构,并列举几种常见的数据结构。
数据结构是计算机中对数据的组织、存储和管理的方式。
常见的数据结构包括数组、链表、堆栈、队列、树、图等。
2. 请解释什么是算法,并列举几种常见的算法。
算法是解决问题的一系列步骤或指令。
常见的算法包括排序算法(如冒泡排序、快速排序)、查找算法(如二分查找)、图算法(如最短路径算法)等。
3. 请解释什么是时间复杂度和空间复杂度。
时间复杂度是衡量算法执行时间随输入规模增长而增长的速度。
常用的时间复杂度有O(1)(常数时间复杂度)、O(log n)(对数时间复杂度)、O(n)(线性时间复杂度)、O(n^2)(平方时间复杂度)等。
空间复杂度是衡量算法执行所需内存空间随输入规模增长而增长的速度。
常用的空间复杂度有O(1)(常数空间复杂度)、O(n)(线性空间复杂度)等。
4. 请解释什么是动态规划算法,并给出一个实际的应用场景。
动态规划是将复杂问题分解为子问题,并记录子问题的解,避免重复计算,从而提高算法效率的一种算法思想。
一个实际的应用场景是求解最长公共子序列问题,即找出两个序列中最长的公共子序列。
5. 请解释什么是贪心算法,并给出一个实际的应用场景。
贪心算法是一种每步选择当前最优解的算法思想。
一个实际的应用场景是求解零钱找零问题,即用最少数量的硬币找零。
二、操作系统与网络1. 请解释什么是操作系统,并列举几种常见的操作系统。
操作系统是计算机系统的核心软件,负责管理计算机硬件资源、提供用户接口和运行应用程序等。
常见的操作系统有Windows、Linux、Unix、macOS等。
2. 请解释什么是进程和线程,并解释二者的区别。
进程是程序在操作系统中的一次执行过程,具有独立的地址空间和资源。
线程是进程的一个执行单元,多个线程共享进程的资源。
区别在于进程是独立的执行单位,而线程是进程内的执行单位。
3. 请解释什么是虚拟内存,并解释其作用。
浙江大学计算机学院2007年考研复试上机题
浙江大学计算机学院2007年考研复试上机题题目要求:给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内。
长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内。
具体的输入输出格式规定如下:输入格式:测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标占一行,其中|x|和|y|小于231;一对0 坐标标志着一个测试用例的结束。
注意(0, 0)不作为任何一个测试用例里面的点。
一个没有点的测试用例标志着整个输入的结束。
输出格式:对每个测试用例,在1行内输出2对整数,其间用一个空格隔开。
第1对整数是长方形框左下角的坐标,第2对整数是长方形框右上角的坐标。
输入样例:12 5623 5613 100 012 340 00 0输出样例:12 10 23 5612 34 12 34-----------------------------------------------------------------------#include <iostream>using namespace std;int main(){int x1,y1,x2,y2,x,y;while(cin>>x>>y&&(x||y)){x1=x2=x; y1=y2=y;while(cin>>x>>y&&(x||y))x1=x1<x?x1:x,y1=y1<y?y1:y,x2=x2>x?x2:x,y2=y2>y?y2:y;cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;}return 0;}Time limit: 1 SecondsTotal Submit: 820 Accepted Submit: 199题目要求:统计一个给定字符串中指定的字符出现的次数具体的输入输出格式规定如下:输入格式:测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。
计算机考研面试试题及答案
计算机考研面试试题及答案近年来,随着计算机科学的快速发展,越来越多的学生选择报考计算机专业的研究生。
而在这个过程中,面试往往是决定录取与否的关键环节。
因此,为了帮助考生更好地备考,本文将提供一些常见的计算机考研面试试题及其答案。
希望能够为考生提供一些参考和借鉴。
1. 介绍一下计算机网络的体系结构。
计算机网络的体系结构是指网络的层次结构。
常见的体系结构有两种,一种是OSI七层模型,另一种是TCP/IP模型。
其中,OSI七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
而TCP/IP模型则是由四个层次组成,分别是网络接口层、互联网层、传输层和应用层。
2. 请解释一下HTTP和HTTPS的区别。
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,它是建立在TCP/IP协议之上的。
而HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,它通过使用SSL (Secure Socket Layer)或TLS(Transport Layer Security)协议进行加密通信,从而保证了数据的机密性和完整性。
因此,HTTPS比HTTP 更加安全。
3. 什么是面向对象编程?面向对象编程(Object-Oriented Programming,简称OOP)是一种软件开发的方法论,它将问题拆分为一系列的对象,通过对象之间的交互来解决问题。
面向对象编程具有封装、继承和多态的特性,可以提高代码的复用性和可维护性。
4. 请简要介绍一下数据库事务。
数据库事务是指数据库系统中执行的一个逻辑单位,它由一系列的操作组成,这些操作要么全部成功,要么全部失败。
事务具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
通过使用事务,可以保证数据库的数据始终处于一致性的状态。
浙江大学计算机考研真题
牛客网,程序员学求职备考神器
NOWCODER
10、在采用中断 I/O 方式控制打印输出的情况下,CPU 和打印控制接口中的 I/O 端口之间交换的信息不可能是()。(点击查看答案>>>>>>>>) A、打印字符 B、主存地址 C、设备状态 D、控制命令
牛客网,程序员学求职备考神器
NOWCODER
牛在牛客网
测试输入包含若干测试用例。每个测试用例的第 1 行给出评估的道路条数 N、 村庄数目 M (N, M < =100 );随后的 N 行对应村庄间道路的成本,每行给出一 对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。 为简单起见,村庄从 1 到 M 编号。当 N 为 0 时,全部输入结束,相应的结果不要 输出。 输出描述:
8、下列有关总线定时的叙述中,错误的是()。(点击查看答案>>>>>>>>) A、异步通信方式中,全互锁协议最慢 B、异步通信方式中,非互锁协议的可靠性最差 C、同步通信方式中,同步时钟信号可由各设备提供 D、半同步通信方式中,握手信号的采样由同步时钟控制
9、若磁盘转速为 7200 转/分,平均寻道时间为 8ms,每个磁道包含 1000 个扇 区,则访问一个扇区的平均延迟时间大约是()。(点击查看答案>>>>>>>>) A、8.1ms B、12.2ms C、16.3ms D、20.5ms
浙大计算机面试题及答案
浙大计算机面试题及答案一、简答题1. 请简述什么是数据结构中的“栈”及其基本操作。
答案:栈是一种后进先出(LIFO)的数据结构,其基本操作包括:- push:将元素压入栈顶。
- pop:从栈顶移除元素。
- peek/top:查看栈顶元素但不移除。
- isEmpty:检查栈是否为空。
2. 描述一下什么是计算机网络中的“TCP/IP协议”。
答案:TCP/IP协议是一组用于互联网上的计算机之间通信的协议。
它包括传输控制协议(TCP)和互联网协议(IP)两个主要部分。
TCP负责在两个网络实体间建立、维护和终止连接,确保数据的可靠传输;而IP则负责在网络中进行数据包的寻址和路由。
二、编程题1. 给定一个整数数组,请编写一个函数,找出数组中第二大的数。
```pythondef find_second_max(nums):max1 = max2 = float('-inf')for num in nums:if num > max1:max2 = max1max1 = numelif num > max2 and num != max1:max2 = numreturn max2```2. 编写一个函数,实现字符串的反转。
```pythondef reverse_string(s):return s[::-1]```三、案例分析题1. 描述一下在软件开发过程中,如何进行有效的版本控制。
答案:有效的版本控制可以通过以下步骤实现:- 使用版本控制系统(如Git)来跟踪代码的变更历史。
- 定期提交更改,并为每次提交编写清晰的提交信息。
- 创建分支来开发新功能或修复bug,以避免影响主分支。
- 进行代码审查,确保代码质量和一致性。
- 合并分支前进行充分的测试,确保新代码不会引入错误。
2. 请分析在分布式系统中,CAP定理的含义及其对系统设计的影响。
答案:CAP定理指的是分布式系统中的一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)三者不可兼得。
浙江大学计算机考研历年面试题集
浙江大学计算机考研 历年面试问题集一、面向对象程序设计1、多态和动态链接的区别多态(Polymorphism)按字面的意思就是“多种形状”。
多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。
动态链接库文件与可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。
动态链接是相对于静态链接而言的。
所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。
换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。
当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。
而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。
仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。
当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。
2、解释面向对象里面的动态绑定在面向对象语言中,可以从一个类派生出另一个类。
派生出其它类的类称为基类,又称为父类。
被派生的类称为派生类,又称为子类。
派生类可以具有父类的特性,共享父类的成员函数,使用父类的成员,还可以定义自己的新特性,定义自己的数据成员和成员函数。
一个派生类可以从一个基类派生,也可以从多个基类派生。
从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。
考研浙大计算机复试英语问答资料(真实问题总结)
1.自我介绍Question: Please introduce yourself.A:Good Morning, My dear teachers. I am glad to be here for this interview. Firstly let me introduce myself. My name is ZZY, 22 years old. I am senior student from SCUT majoring in CS. For the pass three year I learn how to self-study and make friends; I come from suixi, a very beautiful and famous county of guang dong.It’s called the sweetest county of china.I am easy to get along with, and good at thinking.I am skillful in coding some simple programs and searching for information on the Internet for study or research.for the one past year I mainly do my research on stream-media and Network architecture.I’m good at network programming.In my spare time, I like reading book about Philosophy and Science.and, Besides, solving the problems on a ACM online judge system is my hobby. Ok, that is all, thank you for your patience and attention. 2.介绍自己的家庭。
考研计算机面试题库及答案
考研计算机面试题库及答案一、操作系统1. 什么是操作系统?它的主要功能是什么?操作系统是计算机系统中的核心软件,它负责管理计算机的各种硬件和软件资源,提供良好的用户界面并协调各种应用程序的运行。
它的主要功能包括进程管理、内存管理、文件系统管理以及设备管理等。
2. 简要介绍进程和线程的概念以及它们之间的区别。
进程是计算机中运行的程序的实例,它包含了程序的执行代码、数据和所需的资源。
每个进程拥有独立的内存空间和系统资源,它们之间相互隔离。
而线程是进程的执行单元,一个进程可以拥有多个线程。
线程共享进程的资源,它们可以并发执行,提高了系统的并发性和效率。
线程之间的切换开销较小,但线程间的数据共享需要进行同步操作。
3. 什么是死锁?如何避免死锁?死锁指的是两个或多个进程因争夺系统资源而无法继续执行的状态,导致系统无法正常工作。
死锁发生的条件包括互斥条件、请求和保持条件、不可剥夺条件和循环等待条件。
为了避免死锁的发生,可以采取以下方法:- 破坏互斥条件:允许多个进程同时访问资源。
- 破坏请求和保持条件:一个进程在申请资源时,不持有其他资源。
- 破坏不可剥夺条件:允许系统在分配资源时剥夺进程已占有的资源。
- 破坏循环等待条件:对系统中的资源进行排序,按照顺序申请资源。
4. 请简要介绍一下分页和分段的内存管理方式。
分页是将物理内存和逻辑内存分割成固定大小的块,每个块称为页。
逻辑内存也被分割成相同大小的块,称为页面。
操作系统通过页表来进行地址映射,实现逻辑地址到物理地址的转换。
分页的好处是简化了内存的管理,但会产生内存碎片。
分段是将程序按逻辑上的若干段进行划分,每段具有独立的地址空间。
逻辑地址由段号和偏移量组成,段号用于查找段表得到段在物理内存中的基地址,再加上偏移量得到物理地址。
分段的优点是能够方便地实现动态内存分配和保护,但同样会产生内存碎片。
二、数据结构与算法1. 什么是数据结构?请列举几种常见的数据结构。
计算机面试题目(3篇)
第1篇一、基础知识1. 请解释一下什么是位运算,并举例说明其应用场景。
位运算是指对二进制位进行操作的运算,主要包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)等。
以下是一些应用场景:(1)按位与:用于判断两个整数的某一位是否同时为1。
(2)按位或:用于将两个整数的对应位进行或运算,得到结果。
(3)按位异或:用于将两个整数的对应位进行异或运算,如果两个位相同,则结果为0;如果两个位不同,则结果为1。
(4)按位取反:用于将整数的每一位取反,即将0变为1,将1变为0。
(5)左移:用于将整数的二进制表示向左移动指定的位数,右边的位被丢弃,左边补0。
(6)右移:用于将整数的二进制表示向右移动指定的位数,左边的位被丢弃,右边补0。
2. 请解释一下什么是数据类型,并列举常见的几种数据类型。
数据类型是指用于定义变量存储的数据种类的类型。
以下是一些常见的几种数据类型:(1)整型(int):用于存储整数,如int a = 10;(2)浮点型(float、double):用于存储实数,如float b = 3.14;(3)字符型(char):用于存储单个字符,如char c = 'A';(4)布尔型(bool):用于存储布尔值,如bool d = true;(5)数组:用于存储一系列相同类型的数据,如int arr[10];(6)结构体(struct):用于存储不同类型的数据,如struct Person {int age; char name[20];};(7)指针:用于存储变量的地址,如int ptr = &a。
3. 请解释一下什么是面向对象编程,并举例说明其应用场景。
面向对象编程(OOP)是一种编程范式,它将数据和行为封装在对象中,强调继承、封装和多态。
以下是一些应用场景:(1)设计大型软件系统,如操作系统、数据库等;(2)开发图形用户界面(GUI)应用程序;(3)开发网络应用程序,如Web应用、移动应用等;(4)开发游戏和模拟软件。
考研计算机面试题目及答案
考研计算机面试题目及答案一、操作系统与计算机网络1. 请简述操作系统的功能和作用。
操作系统是计算机系统中的重要组成部分,其功能和作用主要包括:- 管理和分配计算机的资源,如内存、处理器、输入输出设备等;- 提供用户与计算机硬件之间的接口,实现用户的程序执行和数据处理需求;- 提供文件管理功能,用于管理和操作计算机中的各种文件;- 实现进程调度和管理,确保多个进程能够合理、高效地共享计算机资源;- 提供系统安全控制功能,保护计算机系统和数据的安全性。
2. 请介绍TCP/IP协议族。
TCP/IP协议族是一组用于互联网通信的协议集合。
其中,TCP(传输控制协议)负责数据的可靠传输,IP(网际协议)负责数据在网络中的路由和寻址。
除了TCP和IP协议外,TCP/IP协议族还包括:- 网络层协议,如IP协议、ARP协议、ICMP协议等;- 传输层协议,如TCP协议、UDP协议等;- 应用层协议,如HTTP协议、FTP协议、SMTP协议等。
3. 请解释死锁的概念,并说明如何预防和避免死锁的发生。
死锁是指两个或多个进程互相请求对方所持有的资源,而导致进程都无法继续执行的状态。
为避免死锁的发生,可以采取以下措施:- 加锁顺序:对资源加锁时,按照相同的顺序请求资源,避免出现环路依赖;- 资源抢占:当一个进程请求资源时,如果该资源已被其他进程占用,可以抢占其他进程的资源,以便自身能够继续执行;- 资源预分配:在进程执行之前,预先分配所需的所有资源,避免资源竞争;- 死锁检测与恢复:通过算法检测死锁的发生,并采取相应的措施,如终止某些进程或回滚操作,来解除死锁的状态。
二、数据结构与算法1. 请介绍常见的数据结构及其特点。
常见的数据结构包括:- 数组:具有连续的存储空间,可以根据下标快速访问元素,但插入和删除的效率较低;- 链表:通过指针将各个节点连接起来,插入和删除的效率较高,但访问某个节点的效率较低;- 栈:一种后进先出(LIFO)的数据结构,只允许操作栈顶元素;- 队列:一种先进先出(FIFO)的数据结构,允许在队尾插入元素,在队首删除元素;- 树:由节点和边组成的层次结构,可以递归地定义树的子树;- 图:由顶点和边组成的网络结构,可以有多个起点和终点。
计算机考研中文综合面试问题与答案
中文综合面试进入综合面试复试考场,请先敲门,进入之后环顾各位老师,先向导师团问好。
整个回答问题环节请注视对方,手机调为静音。
结束时请向导师团道谢,切勿与复试老师争执。
可提前到复试院校熟悉环境,积极调整心态。
无论是用英语提问还是用汉语提问,亦或是用哪种方式提问,这个自我介绍是必不可少的,如果老师用英语提问就用英语回答,用汉语提问就用汉语回答。
对于自我介绍最重要的不是答案。
自我介绍要进行一定的事前准备,你的经历比你的名字更重要,重点介招你做过什么研究、论文题目是什么等学术方面的经验,其他证明自己能力的事情可以简要介绍,当然要讲究实际,不要胡编乱造。
因为导师很可能根据你的介绍接着问问题,老师的相同爱好,可以提一下,拉近与老师的距高。
所以,提前准备一些不错的句子,切勿不停炫耀自己以前取得的成果。
初次见面印象分很重要,所以对于面试礼仪,考生们应该从以下几方面准备:着装,不管你穿什么衣服,都应该做到整洁、得体、大方朴素,并且要使得自己觉得自在,否则因为穿着不适影响发挥将得不偿失。
建议,学生就保留“学生样”,工作了就应该有“工作的样子”,男生最好不要留长发,女生不要穿吊带,高跟鞋、耳环、首饰,不要涂指甲。
面试当天把头发梳理好,保持面部整洁,面带微关。
计算机/软工复试面试中高频问题:请务必在确认老师不可能查证且能自圆其说的条件下进行总体上来说,老师会首先抛出一个基础问题,很可能跟你的项目/毕设相关。
如果你答的好,会继续加深难度,探测你的水平和对问题的理解深度,这个会不停的加分。
如果你答的不好,老师会问更简单的问题,如果还不会,会更简单,这个过程会直减分。
面试过程中请时刻注意自己的站姿,眼神与面部表情等切忌紧张抖腿,眼神闪餐。
紧张属于正常现象,但不可过于明显,与面试官交流过程中面带微笑,尽可能看着面试官回答完所有的问题。
自我介绍不宜过长,时间最好控制在(2~3分钟),自我介绍的相关内容尽量与自身实际相符合,尤其对于中文自我介绍来说。
计算机考研复试面试题库及答案
计算机考研复试面试题库及答案一、专业基础知识1. 计算机组成原理题目:简述冯·诺伊曼体系结构的基本原理。
答案:冯·诺伊曼体系结构是一种计算机系统的设计原则,也是现代计算机的基础。
它的基本原理包括以下几点:- 存储程序:计算机通过将指令和数据存储在同一个存储器中,实现了程序的自动执行。
- 二进制系统:计算机使用二进制表示数据和指令,简化了计算机系统的设计和实现。
- 指令流水线:计算机通过将指令的执行过程划分为多个阶段,并同时进行不同指令的执行,提高了计算机的执行效率。
- 内存层次结构:计算机通过多层次的存储器结构,包括高速缓存、内存和外部存储器,提供了不同速度和容量的存储器选择。
2. 算法与数据结构题目:什么是二叉搜索树?如何实现插入和删除操作?答案:二叉搜索树(BST)是一种特殊的二叉树,满足以下条件:- 对于树中的每个节点,其左子树的所有节点的值小于该节点的值,右子树的所有节点的值大于该节点的值。
- 对于树中的每个节点,其左子树和右子树也是二叉搜索树。
实现插入操作的步骤:- 从根节点开始,将待插入的值与当前节点的值进行比较。
- 如果待插入的值小于当前节点的值,且当前节点的左子树为空,则将待插入的值作为当前节点的左子节点。
- 如果待插入的值大于当前节点的值,且当前节点的右子树为空,则将待插入的值作为当前节点的右子节点。
- 如果待插入的值小于当前节点的值,且当前节点的左子树不为空,则将当前节点更新为其左子节点,重复上述步骤。
- 如果待插入的值大于当前节点的值,且当前节点的右子树不为空,则将当前节点更新为其右子节点,重复上述步骤。
实现删除操作的步骤:- 如果待删除的节点为叶子节点,直接删除。
- 如果待删除的节点只有一个子节点,将子节点连接至待删除节点的父节点。
- 如果待删除的节点有左右子节点,找到其右子树中的最小节点,用该节点替换待删除节点,并删除最小节点。
二、算法设计与分析1. 动态规划题目:请简述动态规划算法的基本思想,并给出一个应用动态规划算法的例子。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++容易出现内存泄露,需要手动回收内存。而 JAVA 有垃圾自动回收机制 C++里面有指针,JAVA 里面没有 JAVA 的可移值性更好,JAVA 的类文件能够在不同的平台上使用。而 C++在 windows 下生成的可执行文件在 LINUX 下不一定能运行,可能需要重新编码。JAVA 生成的类可以认为是中间代码,java 文件在 JAVA 虚拟机上运行,通过虚拟机来产生 最终代码,linux 和 java 下都会有虚拟机。而 C++编译器生成的是最终代码,有时候 系统调用在不同的系统下并不能够成功进行 JAVA 是纯面向对象,而 C++是基于对象的。在 JAVA 里出现最多的就是类 13、面向对象的特点 1)对象唯一性。 每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的 整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。 2)分类性。
此资料由王道论坛()整理并发布,任何个人或组织无权用于任何商业活动!
3、虚拟机的好处、坏处、种类、最快的虚拟机 好处:虚拟机有很好的性能,有很好的可移植性。有利于测试,安全。 坏处:低效率 种类:有 JVM,SableVM,IBM 的 VM,还有 kissmww 协议: HTTP
此资料由王道论坛()整理并发布,任何个人或组织无权用于任何商业活动!
FTP 协议: 文件传输协议 3、说一个网络加密算法并解释一下
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位 的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密 的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半 进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不 交换。DES 使用 16 个循环 4、ppp,tcp 是否面向连接,各属于什么层
Java 对多线程的支持是非常强大的,他屏蔽掉了许多的技术细节,让我们可以 轻松的开发多线程的应用程序。 Java 里面实现多线程,有 2 个方法
1 继承 Thread 类,比如 class MyThread extends Thread {
public void run() {
此资料由王道论坛()整理并发布,任何个人或组织无权用于任何商业活动!
不一样,定义了虚函数要大一些,因为要建立虚函数表
9、什么是内存泄露?
此资料由王道论坛()整理并发布,任何个人或组织无权用于任何商业活动!
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存 泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失 去了对该段内存的控制,因而造成了内存的浪费
动态链接库(Dynamic Link Library,缩写为 DLL)是一个可以被其它应用程序共 享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件与可执行 文件(exe)非常类似,区别在于 DLL 中虽然包含了可执行代码却不能单独执行,而 应由 Windows 应用程序直接或间接调用。 动态链接是相对于静态链接而言的。所 谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一 部分。换句话说,函数和过程的代码就在程序的 exe 文件中,该文件包含了运行时所 需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝, 这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程 序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重 定位信息)。仅当应用程序被装入内存开始运行时,在 Windows 的管理下,才在应用 程序与相应的 DLL 之间建立链接关系。当要执行所调用 DLL 中的函数时,根据链接 产生的重定位信息,Windows 才转去执行 DLL 中相应的函数代码。 2、解释面向对象里面的动态绑定
在面向对象语言中,可以从一个类派生出另一个类。派生出其它类的类称为基类, 又称为父类。被派生的类称为派生类,又称为子类。派生类可以具有父类的特性,共 享父类的成员函数,使用父类的成员,还可以定义自己的新特性,定义自己的数据成 员和成员函数。一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基 类派生的继承称为单继承;从多个基类派生的继承称为多继承。
3)继承性。 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在 定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经 存在的类所定义的内容作为自己的内容,并加入若干新的内容。继承性是面向对象程 序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。在类层次中,子 类只继承一个父类的数据结构和方法,则称为单重继承。在类层次中,子类继承了多 个父类的数据结构和方法,则称为多重继承。在软件开发中,类的继承性使所建立的 软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、 类的创建工作量,增加了代码的可重性。采用继承性,提供了类的规范的等级结构。 通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。 4)多态性(多形性) 多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结 果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性 允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重 用性。 14、面向对象要素
// 这里写上线程的内容 } public static void main(String[] args) {
// 使用这个方法启动一个线程 new MyThread().start(); } }
2 实现 Runnable 接口 class MyThread implements Runnable{
二、网络/网络安全
1、电子邮件协议 收件协议 POP3:从客户端接受邮件服务器的邮件 POP3(Post Office Protocol 3) 适用于 C/S 结构的脱机模型的电子邮件协议,目前
已发展到第三版,称 POP3.,它规定怎样将个人计算机连接到 Internet 的邮件服务器 和下载电子邮件的电子协议
此资料由王道论坛()整理并发布,任何个人或组织无权用于任何商业活动!
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就 是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何 类的划分都是主观的,但必须与具体的应用有关。
抽象、共享、封装(具体内容可以自己试着解释) 15、C++和 C 字符串的区别
C 字符串是基本数据类型,即字符数组;C++字符串是类(这个是根本区别) C 字符串函数是外部函数,字符串作为参数被传进来,进而对其进行操作;C++ 字符串函数是字符串类内部定义的,可以用‘.’来直接使用 C++字符串里面对一些运算符进行了重载,比如==,=,<,>等 16、友元函数有没有参数,输入输出如果没有参数会怎么样 友元函数有参数,后半问我不太明白 17、JAVA 多线程用过么?应注意什么?怎么实现?
10、Java 怎么处理对象的分配和释放问题
Java 把内存划分成两种:一种是栈内存,一种是堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中 分配。当在
一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过 变量的作用域后,Java 会自动释放掉为该变量所分配的内存空间,该内存空间可以 立即被另作他用。堆内存用来存放由 new 创建的对象和数组。在堆中分配的内存, 由 Java 虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或对象后,还可 以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中 的首地址,栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为 数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的 数组或对象。引用变量为0时表示不再使用,释放 11、Java 垃圾收购机制?
1、多态和动态链接的区别 多态(Polymorphism)按字面的意思就是“多种形状”。多态性是允许你将父对
象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当 前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。 简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针
public void run() { // 这里写上线程的内容
} public static void main(String[] args) {
// 使用这个方法启动一个线程 new Thread(new MyThread()).start(); } } 一般鼓励使用第二种方法,应为 Java 里面只允许单一继承,但允许实现多个接口。 第二个方法更加灵活。
继承方式主要表示派生类继承基类时采用的继承方式,主要有三种,即公有继承、 私有继承、保护继承
动态绑定:如果一个基类(没有父类)含有虚函数,那么在编译时,编译器会生成一 张虚函数表,表里是该类中所有虚函数的地址(按出现顺序排列);并且会在该类中动 态的插入一个成员变量(__vfptr),它是一个指向这个虚函数表的指针。对于这个基类 的所有子类,编译器都会生成各自的虚函数表,并且把继承得来的__vfptr 指针指向它。 静态绑定可以理解为在编译时知道了对象名,那么此时就可以访问相应的虚函数;而动 态绑定因为是用一个基类的指针来代表,不到运行的时候程序并不知道这个指针是指 向基类还是指向派生类,那么虚函数也就不确定了