PS:该篇的题目出自牛客网笔试真题
链接:https://www.nowcoder.com/test/21366686/summary
实现对文件的按名存取
实时系统
防止程序间相互越界访问
必须在访问前先装入内存
因为存放在外存中的信息,必须先由CPU读出来写入内存,才能够被CPU使用。
争用带宽
CSMA/CD的机制:控制过程包含四个处理内容:监听、发送、检测、冲突处理。
1、监听:
通过专门的检测机构,在站点准备发送前先侦听一下总线上是否有数据正在传(线路是否忙),若“忙”则进入后述的“退避”处理程序,进而进一步反复进行侦听工作;若“闲”,则一定算法原则(“X坚持”算法)决定如何发送。
2、发送:
当确定要发送后,通过发送机构,向总线发送数据。
3、检测:
数据发送后,也可能发生数据碰撞。因而,要对数据边发送,边检测,以判断是否冲突了。
4、冲突处理:
当确认发生冲突后,进入冲突处理程序。
网络层
这是OSI七层网络模型的知识点,详细可以参考:https://blog.csdn.net/Super_Yiang/article/details/103741814
telnet
Telnet和FTP的相同点和不同点:
Telnet和FTP都可以实现远程登陆,他们的区别在于Telnet是远程登陆协议,而FTP是文件传输协议,这样二者的权限大不相同。
Telnet是它是把登陆用户可以当成本地计算机一台终端,用户在登录远方计算机后,具有计算机上的本地用户一样的权限。如果可以的话,系统甚至可以赋予登陆用户全部的权限。
FTP它只允许用户对远方计算机上的文件进行有限的操作,包括查看文件、上传和下载文件以及改变文件目录等。它只是文件传输协议。
两者都是tcp/ip网络框架下的应用,系统中分配网络接口也不一样。
数据报
主存-辅存
在具有虚拟存储器的计算机系统中,把物理上独立编址的二级存储器,主存储器和辅存储器连接起来统一使用。从而向用户提供了一个比真实主存大得多的逻辑上可统一编址的编程地址空间,称虚拟存储器
2M
字长32位,也就是4个字节,1个字节8位,存储容量为4MB,若按字编址就是4MB÷4B=1M;若按半字编址,就是4MB÷2B=2M
主存中读取一个指令字的最短时间
完成一个基本操作所需要的时间称为机器周期,通常用内存中读取一个指令字的最短时间来规定CPU周期
补码运算的二进制加法器
减法运算一般是通过被减数加上减数的补码来实现,所以是补码运算的二进制加法器
28
无向图就是没有方向的图,如果任意两个顶点之间都存在边,则称该图为无向完全图
假设有k个结点的无向图,要计算最多有多少条边?
第一个结点可以有k-1种选择,第二个有k-2种选择...
以此类推,最多就是(k-1)+(k-2)+...+1,也就是k*(k-1)/2条边
p->next==head
非空的循环单链表尾结点指向头节点
abcde
前序遍历:根左右
中序遍历:左根右
后序遍历:左右根
这一题先根据后序遍历确定a是根节点,然后根据中序遍历确定a的左边是b,右边是dce,然后再中序遍历的左根右确定c是右子树的根,所以树的形状是
a
/ \
b c
/ \
d e
所以先序遍历的序列是:abcde
栈
栈:先入后出后入先出,两种操作:从栈顶入栈和从栈顶出栈
如果是左括号,入栈
如果是右括号,看栈顶是不是左括号,如果是就把那个左括号出栈;否则不配对(可以直接结束算法)
处理完所有符号后,栈为空则配对成功,否则不配对
main(){
int m=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
-2
main(){
int m=3,n=4,x;//m=3,n=4
x=-m++;//x=-3,m=4,注意m++先被引用后再自增
x=x+8/++n;//-3+8/5,x=-2,注意++n是先自增后被引用
printf("%d\n",x);
}
0
数组元素的下标是从0开始
3
函数的实参是
rec1
rec2+rec3
(rec4,rec5)
所以一共有3个
(1)出现在执行语句中;(2)出现在一个表达式中;(3)作为一个函数的实参
注:我的代码用了pow()函数提交后发现也可行。
import java.lang.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
double a=input.nextDouble();
double b=input.nextDouble();
a=Math.pow(a,1/b);
System.out.println(a);
}
}
这个是自己写的开根函数
import java.lang.*;
import java.util.*;
public class Main{
/**
* 开根函数:用二分法求
* @param min 最小值
* @param max 最大值
* @param m 被开根的数
* @param n 开几次根
* @return
*/
public static double pow(double min,double max,double m,double n){
double constant=1.0E-12;//确保小数点后面保留12位,不然会出现栈溢出
double temp=(min+max)/2;
double result=temp;
for(int i=1;i<n;i++){
result*=temp;
}
if(m-result>constant){
min=temp;
} else if(result-m>constant){
max=temp;
}else {
return temp;
}
return pow(min,max,m,n);
}
public static void main(String[] args){
Scanner input=new Scanner(System.in);
double a=input.nextDouble();
double b=input.nextDouble();
a=pow(0,a,a,b);
System.out.println(a);
}
}
求指教。。。