zoukankan      html  css  js  c++  java
  • 试题总结1

    1.tcp断开连接为什么要四次握手,如果没有四次将会有什么隐患?
    TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果.

    2.开机启动流程


    3.重定向和追加重定向是怎么实现的?
    linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2
    以后打开文件后。新增文件绑定描述符可以依次增加。 一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。

    4、Arp的工作原理,如果没在一个局域网,是怎么实现的?

    5、Linux由那几个子系统组成?

    6、文件系统如何找到存取文件的?

    7、DNS的解析过程,比如给你一个域名www.baidu.com,那解析www.baidu.com和baidu.com有什么不同?

    8、给你一个数组,怎么找出数组中某一个数超过了数组长度的一半?

    9、谈到备份的项目,讲lsyncd内部是什么实现实时同步?

    10、考一个权限的问题,比如755代表什么意思?

    11、如果某一天网站流量增加了十几倍,你该如何分析这个问题?怎么解决?

    12、你有用什么开发语言做过什么项目,最长代码有多少?讲解一下它的主要功能和实现?

    12,对运维的理解?

    13、大学期间晕倒的最难的问题是什么?怎么解决的?

    补充

    1、简述Apache两种工作模式,以及它们之间的区别
    线程模式(worker)与进程模式(prefork)的区别
    (1)prefork采用预派生子进程方式,用单独的子进程来处理 不同的请求,进程之间彼此独立。它使用多个子进程,每个子进程只有一个线程。进程模式性能较稳定,但是系统开销大于线程模式。
    (2)worker全新的支持多线程和多进程混合模型的多路处理模块(MPM) .它使用多个子进程,每个子进程有多个线程。系统开销小于进程模式(内存使用比较prefork小得多),适用于高流量的HTTP服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉".
    (3)woker和prefork的切换,cd /usr/sbin ,mv httpd httpd.prefork,mv httpd.worker httpd,service http restart

    2、用iptables添加一个规则允许192.168.0.123访问本机3306端口
    iptables -I INPUT -p tcp -s 192.168.0.123 -d 127.0.0.1 --dport 3306 -j ACCEPT

    3、如何对一台Linux服务器进行系统性能调优,列举出参数


    一,选择题
    1,在32位机器中,以下结构体占用多少字节(考察结构体对齐规则)(B)
    struct {
    char a;
    double b;
    int c;
    short d;
    };
    A.24 B.20 C.18 D.以上都不对

    2.网络协议采用()的方式来传输数据,在此字节序下,从低地址到高地址0x12345678的表示形式为____。(B)
    A.big_endian, 0x78 56 34 12
    B.big_endian, 0x12 34 56 78
    C.little_endian, 0x78 56 34
    D.little_endian, 0x12 34 56 78

    3.上网时候发现网页不能访问,QQ使用正常,出现此问题可能的原因是(C)
    A.网线的问题 B.IP地址冲突 C.DNS问题 D.网关错误

    4.某系统中一个组件的某个函数中,有一个变量没有正确初始化,在(A)阶段最可能发现问题。
    A.单元测试 B.集成测试 C.确认测试 D.系统测试

    5.一个栈的入栈序列是ABCDE,则栈的不可能输出序列是(B)
    A.DECBA B.ADEBC C.EDCBA D.ABCDE

    6.已知一棵二叉树,如果线序遍历的节点顺序是ABDCGEF,中序遍历是DBCGAEF,后序遍历结果为(C)
    A.CFHGEBDA B.CDFEGHBA C.DGCBFEA D.CFHGEDBA

    7.执行以下语句的结果是(C)
    int a[2][3] = {0,1,2,3,4,5};
    int *b = a[1];
    *b = 6;
    b = a[0];
    for(int i=0;i<6;++i) {
    printf("%d",b[i]);
    }
    A.012345 B.062345 C.012645 D.编译出错

    8.进程调度是从(A)选择一个进程投入运行。
    A.就绪队列 B.等待队列 C.作业后备队列 D.提交队列

    9.下列关于类和对象的叙述中,错误的是(A)
    A.一个类只能有一个对象
    B.对象时类的具体实例
    C.类是对某一类对象的抽象
    D.类和对象的关系是一种数据类型与变量的关系

    10.如果存在一个基本有序的序列,按照哪种排序方式最快(D)
    A.快速排序 B.冒泡排序 C.归并排序 D.插入排序

    11.在一个单链表中,已知指针q指向的节点是指针p所指结点的前驱节点,如果q和p之间插入s节点,则执行(C)
    A.s->next=p->next;p->next=s; B.p->next=s->next;s->next=p;
    C.q->next=s;s->next=p; D.p->next=s;s->next=q;

    12.25匹马,五条赛道,一匹马一条赛道,求决胜跑得最快的1,2,3名,至少(C)次
    A.9 B.8 C.7 D.6

    13.进程间通信方式有(多选)(ABC)
    A.管道 B.信号量 C.socket D.互斥锁

    14.下面哪些协议属于TCP/IP模型的传输层(多选)(CE)
    A.HTTP B.POP3 C.TCP D.IPX E.UDP F.HDLC

    15.多线程同步机制包括(多选)(ABD)
    A.critical section B.semaphore
    C.pipe D.mutex

    二.填空题
    1.请写出下面二叉树的后序遍历节点顺序(DFGEBIHCA)


    2.linux进程的三种状态是(就绪)(运行)(阻塞)。

    3.浏览器访问某页面,HTTP协议返回状态码403表示(服务器接受请求,但是被拒绝处理)。

    4.快速排序在序列已经有序的情况下的复杂度是(O(n^2))。
    5.设数组定义为a[50][70],每个元素占2个存储单位,数组按照列优先存储,元素a[0][0]地址为1024,那么元素a[32][58]的地址为(1024+2*31*70+2*58=5480)。

    三,编程题
    1. 给定一个整数序列,取出其中第二大的数,要求不对整个序列排序。
    要求:a.语言为C/C++/Java
    b.自定义函数原型和输入输出
    c.符合相关语言的编码规范
    解题代码:
    void getSecondNum(int *a, int len)//传入整型数组a及其长度len
    {
    int i=0,j=0,maxindex=0,max=a[0];
    int b[len];
    for(i=0;i<len;++i)//为了不改变原数组,将a数组复制到b数组
    b[i]=a[i];
    for(i=0;i<2;++i) {
    //一共两次外循环,第一次循环删除最大值,第二次获得的即为所求第二大的数字
    max=b[0];
    for(j=0;j<len;++j)
    if(max<b[j]) {
    max=b[j];
    maxindex=j;
    }
    b[maxindex]=-65535;//将最大值修改为一个非常小的负数
    }
    printf("第二大的数字为:%d ",max);
    return;
    }
    测试:
    int main(void)
    {
    int a[10]={1,2,3,4,7,8,-33,-99,100,101};
    int len=sizeof(a)/sizeof(int);
    getSecondNum(a,len);
    }

    2. 给你一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,现在给你一个字典,用户输入一个单词,让你根据字典找出这个单词有多少兄弟单词。请给出算法思路和伪代码实现。
    思路:
    1.计算给定单词a的长度len,从字典中获取长度为len的所有单词,之后b单词就遍历这次获取到的所有单词,并分别和原单词a比较。
    2.定义一个函数part,统计传入单词中的各个字母的个数,分别存入一个长度为26的整型数组(如a[1]就对应字母b的个数,a[25]就对应字母z的个数),大概就是个桶排序的思路。
    3.比较单词a和单词b用part函数得出的结果,如果对应的字母个数都是一样的,则说明单词a和单词b是兄弟单词,同时,统计兄弟单词个数的变量count自增一即可。
    3. 输入为一个小写字母(a-z)组成的字符串,请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。比如,hello经过压缩后变成he2lo,wwwabc压缩后变成3wabc。
    要求:a.语言为C/C++/Java
    b.自定义函数原型和输入输出
    c.符合相关语言的编码规范
    解题代码:
    void compressString(char *a,int len)//传入字符串a和a长度len
    {
    char c;
    int i=0,j=0,skip=1;
    while(i<len) {
    c=a[i];
    for(j=i+1;j<len-i-1;++j) {
    if(a[j]==c)
    ++skip;
    else
    break;
    }
    if(skip != 1)
    //如果本次向后探索,发现相同的字母,则打印个数和字母
    printf("%d%c",skip,c);
    else
    //如果本次向后探索,没有发现相同的字母,则仅打印字母
    printf("%c",c);
    i+=skip;
    skip=1;
    }
    printf(" ");
    return;
    }

    附加题:某电商做活动,共有50万台ipone,用户(user)可用1000个人积分(point)兑换一台ipone,且每人限换一台。请设计一套接口并实现下单逻辑。参考(但不局限于)下面的下单逻辑:
    A. 创建订单
    B. 扣减用户积分
    C. 扣减ipone库存
    D. 下单成功
    同时请回答:
    A. 数据库表结构如何设计?有哪些表?分别有什么作用?
    B. 下单过程中哪些地方可能成为瓶颈?如何解决或改善?
    C. 是否会用到数据库事务,哪些地方会用到?如果不用数据库事务,如何保证数据的一致性
    这个涉及到接口的设计(开发),还有数据库(DBA),系统瓶颈(运维)等多方面的知识,可能考查的就是你对哪些方面的知识更精通,也就是考查你的知识面,开放性题目,这里我就不写自己的答案了。
    注:本人知识有限,不一定都对,敬请指正。


     

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/losbyday/p/5854955.html
Copyright © 2011-2022 走看看