笔试题总结

来源:互联网 发布:qq农场源码 php 编辑:程序博客网 时间:2024/05/17 04:11
1.C语言中两种方式使用#include命令,#include<>与#include ””的区别是什么?

答:"#include ”用于标准库文件或系统提供的头文件,到系统标准头文件的位置查找头文件。

而"#include"XXX.h"则用于用户自定义的头文件,先从当前目录查找是否有指定名称的头文件,若当前目录未找到该头文件,再从标准文件目录中查找。这两种方式有他们的本质区别。

在c语言程序设计中包含的头文件可分为系统标准头文件和用户工程中自定义的头文件,对于系统标准库头文件可以用这两种方式进行包含,但是采用第一种方式更节省时间,所以一般建议采用第一种方式。对于用户自己定义的头文件(保存在工程路径下)只能用第二种方式进行包含操作,否则出错(当然也可以把自己定义的工程中需要的头文件放在标准头文件路径下,但是这违背常规操作)。

2.hash冲突时候的解决方法?

1)、开放地址法
2)、再哈希法
3)、链地址法
4)、建立一个公共溢出区

3.堆和栈的区别?

答:1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

3、栈是向下增长的,堆是向上增长的。

4.进程和线程区别?

一个程序至少有一个进程,一个进程至少有一个线程。
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。

5.单链表的倒置。

//逆转链表,并返回逆转后的头节点
node* reverse(node *head)
{
 if(head == NULL || head->next ==NULL)
 {
  return head;
 }
 node *cur = head;
 node *pre = NULL;
 node *tmp;
 while(cur->next)
 {
  tmp = pre;
  pre = cur;
  cur =cur->next;
  pre->next =tmp;                 //操作pre的next逆转
 }
 cur->next =pre;                    //结束时,操作cur的next逆转
 return cur;
}

6.输入一个十进制数,求其七进制表示,函数原型:toBinary(intnum)

public static String toBinary(int num) {

Stack<Integer> stack = newStack<Integer>();

StringBuffer sb = new StringBuffer();

if(num == 0) {

stack.add(0);

}

//余数入栈

while(num != 0) {

stack.add(num % 7);

num = num / 7;

}

//出栈,得到结果序列,存入StringBuffer

while(!stack.isEmpty()) {

sb.append(stack.pop());

}

return sb.toString();

}


0 0
原创粉丝点击