几个面试题

1,可重入函数的概念


满足下列条件的函数多数是不可重入的:

1) 函数体内使用了静态数据结构

2) 函数体内调用了malloc()或者free()函数;

3) 函数体内调用了标准I/O函数。

 

2,选择排序和冒泡的区别


冒泡排序是每一次都可能要交换 选择排序是在比较时记下a[i]的位置 最后来交换 
  所以他们的交换过程是不一样的 而查找的过程是一样的

 

3,三次握手第二个SYN是什么意思


第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器(请求SYN),并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包(应答SYN),此时服务器进入SYN_RECV状态;

三次握手客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

4,在一个NxN图片里求出最大面积的白色矩形,给出它的四个坐标点


 

5,一个数组里有不等的数字串,求连接所有串的一个最小数序列。


 

6,将数组里正负数左右分开,要稳定。


左右两个指针相遇之前交换,这样会不稳定。

 

7,PING一下会传送几个包


Ping发送一个ICMP回声清求消息给目的地并报告是否收到所希望的ICMP回声应答。

它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。

首先ARP高速缓存没有目标IP地址。ARP请求分组与响应分组,2个 。

其次是PING本身使用了ICMP请求与回答报文2个,四连发。没有丢失的话就是共计8个。 

8,赛马题的7场的方案


分5组   比赛5次 (ABCDE)决出   A1   A2   A3   A4   A5 B1   B2   B3   B4   B5 C1   C2   C3   C4   C5 D1   D2   D3   D4   D5 E1   E2   E3   E4   E5

再比赛1次 A1   B1   C1   D1   E1比赛 至少可以淘汰2组 假设   A1   >   B1   >   C1   >   D1E1 则   最快的必然是   A1   A2   A3   B1   B2   C1中的3批
A1已经确定有

则最后一场对A2   A3   B1   B2   C1进行比较 选出前2名

共7场   OVER

问题,这个对应了什么数据结构?

 面试官最后说了实现用链表,开始我说对应树他没确定是对的

 

9,带括号的计算器;


考虑有括号则使用栈,考虑有四则运算则CASE,考虑有共同的运算部分则把计算做成函数调用。

 

 

10,变相的约瑟夫环;


 

11,函数调用的操作顺序


 

12,给自己出十道数据结构 


1)静态表的数组表示法

2)字串模式匹配(这个是网易的笔试

3)DFS & BFS

4)构造最小生成树MST: PRIM & KRUSKAL

5)点点路径:循环的DIJISTRA,FLOYD

6)二叉搜索树

7)B树

8)键树

9)选择排序

咦。我发现竟然还没有十个问题。

 


 

 

 

 

posted @ 2013-12-19 21:45  好哥TOP  阅读(171)  评论(0编辑  收藏  举报