最新深信服笔试面试题

来源:互联网 发布:淘宝红包微信群 编辑:程序博客网 时间:2024/04/27 17:54

今天5月份深信服的笔试面试题,主要是网络编程方面的比较多,不过只记下几题,希望对大家有用。

1、connect方法会阻塞,请问有什么方法可以避免其长时间阻塞?

答:最通常的方法最有效的是加定时器;也可以采用非阻塞模式。

2.网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别? 
答案一:
(1)进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。
(2)线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
答案二:
根本区别就一点:用多进程每个进程有自己的地址空间(address space),线程则共享地址空间。所有其它区别都是由此而来的:
(1)速度:线程产生的速度快,线程间的通讯快、切换快等,因为他们在同一个地址空间内。
(2)资源利用率:线程的资源利用率比较好也是因为他们在同一个地址空间内。
(3)同步问题:线程使用公共变量/内存时需要使用同步机制还是因为他们在同一个地址空间内。

3.链表和数组有什么区别

数组和链表有以下几点不同:
(1)存储形式:数组是一块连续的空间,声明时就要确定长度。链表是一块可不连续的动态空间,长度可变,每个结点要保存相邻结点指针。
(2)数据查找:数组的线性查找速度快,查找操作直接使用偏移地址。链表需要按顺序检索结点,效率低。
(3)数据插入或删除:链表可以快速插入和删除结点,而数组则可能需要大量数据移动。
(4)越界问题:链表不存在越界问题,数组有越界问题。
说明:在选择数组或链表数据结构时,一定要根据实际需要进行选择。数组便于查询,链表便于插入删除。数组节省空间但是长度固定,链表虽然变长但是占了更多的存储空间。

4.编码实现一个单链表反序

List reverse(List n) {
        if(!n)//判断链表是否为空,为空即退出。
    {
        returnn;
    }
    list cur = n.next; //保存头结点的下个结点
    list pre = n; //保存头结点
    list tmp;
    pre.next = null; //头结点的指针指空,转换后变尾结点
    while( NULL != cur.next ) //循环直到cur.next为空
    {
        tmp = cur; //实现如图10.3—图10.5所示
        tmp.next = pre;
        pre = tmp;
        cur = cur.next;
    }
    returntmp; //f返回头指针
}

 

本文发表自 深信服笔试面试题 http://www.coderdoc.com/interview/101.html
转载请注明出处。