上一周笔试DD+BD(除编程题)总结(一)

来源:互联网 发布:51单片机项目 编辑:程序博客网 时间:2024/06/05 03:57

上一周是真的忙活了一周,从周一到周天,整整一周,但是全部GG。
虽然GG但是真的有很多都不会。首先操作系统这周要好好看,尼玛,真的那天让我算时间片,我真的忘记了。

其实各个公司考查的重点都不太一样,今天总结一下。

就是笔试期间做的一点记录,尽量把疑惑今天都解开。
最重要的是,记住它们!!!!!!!!!!!!!!!!!!!!!!!!!!!!记住!!!!!!!!!!!!!它们!!!!!!!!!我这记性,哎,真的叫人难受。

滴滴

滴滴一上来的名字叫”智力题“然后看到的第一个题我就傻逼了。
0 5 27 119 495 2015 问我下一个。
我的天哪!!!!!
可以说是很崩溃了。
我想了一下 就是
0*4+5=5;
5*4+7=27;
27*4+11=119;
现在开始不对了
119*4+19=495;
495*4+35=2015;
我去!!!!!!!!
后来蒙了一个。
就2015*4+X。。。。
通项公式:an=2^(2n-1)-a^(n-11)-1……我的天哪!

然后就是概率论,数列,离散,数学归纳等。会写的就写了,但是基本全是蒙的,我蒙的,呵呵,真的没对过,高中的时候,物理,答案是ACD,我蒙了个B,这事太多了。

现在认真起来:

1、算法信息不可还原的是?
7HAT DES RSA LZ77
->RSA
不可还原就是在加密之后无法还原为原始密码。
2、某计算机系统中有8台打印机,由K个进程竞争使用,每个进程最多需要3台打印机。该系统可能会发生死锁的K的最小值是( )。

A.2
B.3
C.4
D.5
正确答案
C
答案解析
这种题用到组合数学中鸽巢原理的思想,考虑最极端情况,因为每个进程最多需要三台打印机,如果每个进程已经占有了两台打印机,那么只要还有多余的打印机,那么总能满足达到三台的条件。所以,将8台打印机分给K个进程,每个进程有两台打印机,这个情况就是极端情况,K为4。
3、编程题:
大概是 数字对2,3,5都可以整除,求符合条件的第n个数。
反正我每次写编程题,都是事后诸葛亮。
真的不难,恐怕 我有毒吧。。。。。。。。。

#include<iostream>using namespace std;int main(){    int n,m,i=1,j=1;    cin>>n;    while(j++){    m=j;        while(m%2==0){            m/=2;        }        while(m%3==0){              m/=3;        }        while(m%5==0){              m/=5;        }        if(m==1||m==2){            if(n==1){                cout<<1;                return 0;            }            i++;            if(i==n){                break;            }        }        else{        continue;        }    }    cout<<j<<endl;;        return 0;}

还有一个记不住。

盛大游戏

这个就是放弃治疗了,我投的WEB,后来盛大的WEB取消了把我分到JAVA,我难过,我痛苦啊,凭着大三学过一学期JAVA的经验硬着头皮把选择写完,到了编程我一看,哎呦,不难。本想写,但是!!!只能用java,难过,本想C/C++也是可以的呢。

百度

这个的GG真的烦,学校的网络一晚上不停的掉,编程题直接上不去。就把前段答了,当然,我看了编程题,有网我也不会写。。。不是我放弃治疗,真的是能力所致,我写不出来。真的好难。但是舍友运维通过了,去面试了,好像一面挂掉了。哎,大家加油吧!!!

这个是真的很细!!!
1、Math.max();

返回最大数。

var result1=Math.max();//-Infinityvar result=Math.max(5,7);//7var result2=Math.max(1,3,5.6,2);//5.6var result2=Math.max(1,3,5.6,2,"1");//5.6//错误的var str=[1,2,3,4,5,1,3,9];var result1=Math.max(str)//NANvar result2=Math.max(1,3,5.6,2,"d");//NANvar num=new Array(1,2,3,4,5);var result1=Math.max(num);//NAN

2、关于this指针的

var Test ={        foo:"test",        func:function () {            var self=this;            console.log(this.foo);            console.log(self.foo);            (function () {                console.log(this.foo);                console.log(self.foo);            })();        }    };    Test.func();

我一开始的答案是

testtesttesttest

我应该是该不太理解这个立即执行函数吧。
正确答案:

笔试疑惑.html:25 test笔试疑惑.html:26 test笔试疑惑.html:28 undefined笔试疑惑.html:29 test

那么就是在立即执行函数里面的this.foo了。这个是由于在立即执行函数中,产生了闭包,内部无法访问到外部的this,所以这个时候的this指向的window对象,则输出为undefined,而self.foo有值是因为在闭包函数外面this给到了self。
参考:https://segmentfault.com/q/1010000011133004/a-1020000011133254

3、关于return的疑惑:

function Test(){        var x=0;        return function(){            console.log(x++);        }    }    var f1=Test(1),f2=Test(1);    f1(1);f1(1);f2(1);

答案:010
4、关于数组

var arr=[1,2,3];    arr.shift();    arr.push();    arr.unshift();    var ne=arr.concat([1,2]);    console.log(ne);

答案:[2, 3, 1, 2];
说一下,arr.shift();是去掉数组第一个元素。他的返回值是去掉的第一个元素。而 arr.unshift();是从数组的开头添加一个元素。他的返回值是新数组的长度。arr.push();会在数组的末尾插入元素并且返回新数组的长度。arr.concat();他里面是参数不论是什么,都是返回一个数组,作为一个数组元素存在。而[1,2]会添加到当前的数组中。

5、关于定时器

for(var i=1;i<=3;i++){   setTimeout((function(a){       console.log(a);       })(i),0);  };

答案:1,2,3
并不是像这样的4,4,4

for(var i=1;i<=3;i++){   setTimeout(function(){       console.log(i);       },0);   };

原因:在第二个的4,4,4是Javascript事件处理器在线程空闲之前不会运行。所以等for循环结束之后执行定时器,这个时候i已经变为4了。而第一个就是为了改变这样的现状 ,在定时器中加入了立即执行函数,所以它的值是正确的。

6、邻接矩阵
大二的时候,真的算法的学的挺好的,谁知道一年没理这玩意就什么都不会了。
邻接矩阵就是可以用来表示图的一个矩阵。
具体了解:百度一下
这里重点两点:1、对称的是无向的。2、这他妈的真的很容易理解。
0 0 1 1 1
0 0 1 1 0
1 1 0 1 0
1 1 1 0 1
1 0 0 1 0
求顶点和边数?
ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,5,14。出度度入度就不说了,我下次要是记不住就抽自己,真他妈的猪脑子!!!
7、中缀式->后缀式

规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出找并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。参考原文

可以说是非常清晰了。
中缀式:a*(b-(c+d))
后缀式->abcb+-*

8、文件权限
10个字符确定不同用户能对文件干什么

  • 第一个字符代表文件(-)、目录(d),链接(l)

  • 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

  • 第一组rwx:文件所有者的权限是读、写和执行

  • 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

  • 第三组r–:不与文件所有者同组的其他用户的权限是读不能写和执行

也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7

  • 1 表示连接的文件数

  • root 表示用户

  • root表示用户所在的组

  • 1213 表示文件大小(字节)

  • Feb 2 09:39 表示最后修改日期

  • abc 表示文件名
    可以说是比较难记了。
    9、标准输入输出的重定向
    shell上:
    0表示标准输入
    1表示标准输出
    2表示标准错误输出

    默认为标准输出重定向,与 1> 相同
    2>&1 意思是把 标准错误输出 重定向到 标准输出.
    &>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中。
    参考原文

10、排序最快的?
快速排序吧,毕竟名字在这呢!

总结一下,百度其实我的选择凑合,编程一个没出来就很悲伤了。

腾讯

emmmmmmmmmmmmmmmmmmmm,今天就先到这里,舍友睡了,我实在不敢再不睡了。哈哈哈!!!!!!!!!!!!!!!!