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),系统瓶颈(运维)等多方面的知识,可能考查的就是你对哪些方面的知识更精通,也就是考查你的知识面,开放性题目,这里我就不写自己的答案了。
    注:本人知识有限,不一定都对,敬请指正。


     

  • 相关阅读:
    菜单、toast、对话框的使用
    对话框应用反射销毁
    java随机汉字生成
    Android从主界面退出
    Android获取网络状态
    ssh secure shell 乱码问题
    MongDB安装使用
    安装scrapy
    列表查找以及二分查找
    Tuple、list的区别以及dict和set
  • 原文地址:https://www.cnblogs.com/losbyday/p/5854955.html
Copyright © 2011-2022 走看看