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

上一周是真的忙活了一周,从周一到周天,整整一周,但是全部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();//-Infinity
var result=Math.max(5,7);//7
var result2=Math.max(1,3,5.6,2);//5.6
var 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)//NAN
var result2=Math.max(1,3,5.6,2,"d");//NAN

var 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();

我一开始的答案是

test
test
test
test

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

笔试疑惑.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,今天就先到这里,舍友睡了,我实在不敢再不睡了。哈哈哈!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值