复试专业问答五(hd,hs)

软工七大原则

参考:https://blog.csdn.net/personbing/article/details/51039525

1.开-闭原则(Open-Closed Principle, OCP)

2.里氏代换原则(Liskov Substitution Principle,常缩写为.LSP)

3.依赖倒置原则(Dependence Inversion Principle),要求客户端依赖于抽象耦合

4.接口隔离原则(Interface Segregation Principle, ISP)

5.合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)

6.迪米特法则(Law of Demeter LoD)又叫做最少知识原则(Least Knowledge Principle,LKP),就是说,一个对象应当对其他对象有尽可能少的了了解.

7.单一职责原则(Simple responsibility pinciple SRP)

另外:常说的OO五大原则就是指其中的 :

1、单一职责原则;2、开放闭合原则;3、里氏替换原则;4、依赖倒置原则;5、接口隔离原则。

链表插入

问题:学生信息系统,在链表里插入一条学生信息,保持按学号来排序依旧有序

1、遍历链表,按照学号顺序找到此条纪录插入的合适位置

2、在正确位置进行插入操作,链表插入

首先定义链表的结构:


struct

{

int num; /*学生学号* /

char str[20]; /*姓名* /

struct node *next;

} ;

在建立的单链表中,插入节点有三种情况,如图所示;

插入的节点可以在表头、表中或表尾。假定我们按照以学号为顺序建立链表,则插入的节点依次与表中节点相比较,找到插入位置。由于插入的节点可能在链表的头,会对链表的头指针造成修改,所以定义插入节点的函数的返回值定义为返回结构体类型的指针。节点的插入函数如下:

struct node *insert(head,pstr,n) /*插入学号为n、姓名为pstr的节点*/
struct node *head; /*链表的头指针*/
char *pstr; 
int n;
{
	struct node *p1,*p2,*p3;
	p1=(struct node*)malloc(sizeof(struct node))/*分配一个新节点*/
	strcpy(p1->str,pstr); /*写入节点的姓名字串*/
	p1->num = n; /* 学号*/
	p2 = head;
	if(head==NULL){/* 空表*/
		head=p1; 
		p1->next=NULL;/*新节点插入表头*/
	}
    /*非空表*/	
	else{ 
		while(n>p2->num&&p2->next!=NULL){/*输入的学号小于节点的学号,并且未到表尾*/
			p3 = p2;
			p2 = p2->next;/* 跟踪链表增长*/
		}
		if(n<=p2->num) /*找到插入位置*/ 
		if(head==p2){/* 插入位置在表头*/
			head = p1;
			p1->next = p2;
		}
		else{ /*插入位置在表中*/
			p3->next = p1;
			p1->next = p2;
		}

		else{ /*插入位置在表尾*/
			p2->next = p1;
			p1->next = NULL;
		}
	}
	return(head); /* 返回链表的头指针*/
}

整体思想:定义学生信息结构体申请新的插入节点,整体分为两大类,空表和非空表插入。

空表插入表头

非空表插入的时候首先需要根据学号顺序查找插入位置,又分三种情况讨论,分别是表头、表中和表尾插入

mips cpu实现单周期和多周期的区别 

参考:https://wenku.baidu.com/view/29928e51da38376bae1fae8a.html

参考:https://blog.csdn.net/zhaokx3/category_6243986.html

单周期CPU:单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。  

单周期CPU的功能:能够实现一些指令功能操作。

和单周期CPU的设计相同,都是为了实现一系列的指令功能,但需要指出的是何为多周期(注意与前面写道的单周期的区别,这也是设计的关键之处)

多周期CPU:指的是将整个CPU的执行过程分成几个阶段,每个阶段用一个时钟去完成,然后开始下一条指令的执行,而每种指令执行时所用的时钟数不尽相同,这就是所谓的多周期CPU。

 java特性

简单性
java的语言取消了c++中复杂的头文件,结构,操作符重载,虚基类等复杂的功能取消了指针,使得java语言的编写变得更为简单。同时java的简单性还体现在它的类库较小,使其适合于嵌入式的开发。虽然随着功能增加,java的类库也在不断增大。但java也退出了适合于嵌入式开发的javaME小型类库。
健壮性
java虚拟机可以在编译时发现其他语言在运行时才能发现的错误,这使得程序员寻找bug变得更加方便。
可移植性
首先,java对基本类型的定义是统一的,如int型准确的定义为32位,不像C语言在不同的编译器下,int的存储空间都不一样;java的字符串也使用标准的unicode编码。另外java虚拟机实现了在不同操作系统下运行同一段Java程序,实现了java在一定意义上的跨平台。
动态性
java与c++相比更加具有动态性,其反射机制就是其动态性的经典体现
面向对象
java的面向对象技术相当成熟,与c++相比,java取消了多重继承而采用了接口,这使得程序的结构更加清晰
参考链接: https://blog.csdn.net/YourFriendyf/article/deails/88957241  

知识图谱的定义

知识图谱是Google用于增强其搜索引擎功能的知识库。本质上, 知识图谱旨在描述真实世界中存在的各种实体或概念及其关系,其构成一张巨大的语义网络图,节点表示实体或概念,边则由属性或关系构成。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clark-dj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值