2014.10.15面试总结

1.TCP包结构

    TCP头:20字节

    选项字段:可以没有,最多40字节

    填充字段:使TCP首部长度是4字节的整数倍


2.TCP流量控制,拥塞控制算法

    流量控制:滑动窗口

    拥塞控制:慢启动,拥塞避免,快速重传 ,快速恢复


3.VIM如何删除3行,如何移动到行首

    删除3行:3dd,d3d,V选中3行后d

    移动到行首:0(绝对行首),^(第一个非空字符)


4.代码题,一个数组中的元素先递增再递减,找到其拐点

    基本思想:二分查找+递归

    整体思路:每次二分查找得到中间值a,再递归求出左边区域的最大值b和右边区域的最大值c,最终拐点就是a、b、c中最大的那个数

    注意:如果middle==start或middle==end,则停止递归,最大值即start和end中较大的那个


5.一个链表,如何找到倒数第k个结点?如果链表有环,如何处理?

    无环情况:

    两个指针,第一个指针先走k-1步,然后两指针同时后移,直到后面的指针移到尾结点,前面的指针就是倒数第k个结点


    有环情况:

    先判断是否有环:两个指针,第一个每次走1步,第二个每次走2步,如果第二个走到NULL则说明无环,如果两个指针相遇了则说明有环。

    再判断环的起点:两个指针,第一个从链表起始开始走,第二个从相遇处开始走,两个指针每次都只走一步,再相遇的那个点就是环的起点。证明:设环长为L,环的起点距链表起点距离为A,快慢指针相遇时距环的起点距离为X。则对慢指针的路程有S=A+X,对快指针有2S=A+X+nL,nL表示快指针在环内跑了n圈。消去上面两个式子中的S,得到A-X=nL,即环的起点到链表起点的距离A与到相遇点的距离X之差,正好是环长的整数倍。所以一个指针从起点走,一个指针和相遇点走,起点的指针走完A步后,另外一个指针也刚好回到环的起点,两者相遇。

你可能感兴趣的:(算法,面试)