【去哪儿】笔试

1. linux最新稳定版本号

简单介绍下Linux的版本号,原文在这:

http://blog.chinaunix.net/uid-26184465-id-3055265.html

linux内核版本号格式

major.minor.patch-build.desc
  1. major:表示主版本号,有结构性变化时才变更。
  2. minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版(稳定版)。
  3. patch:表示对次版本的修订次数或补丁包数。
  4. build:表示编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。
  5. desc:用来描述当前的版本特殊信息;其信息由编译时指定,具有较大的随意性,但也有一些描述标识是常用的,比如:
    1. rc(有时也用一个字母r),表示候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。
    2. smp,表示对称多处理器(Symmetric MultiProcessing)。
    3. pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。
    4. EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。
    5. mm,表示专门用来测试新的技术或新功能的版本。
    6. fc,在Red Hat Linux中表示Fedora Core。

Alpha版本是内部测试版,是比Beta版还早的测试版,一般不向外部发布,会有很多Bug,除非你也是测试人员,否则不建议使用。
Beta版本是测试版,这个阶段的版本会一直加入新的功能。
RC版本(Release Candidate) 是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错。
RTM版本(Release to Manufacture)是给工厂大量压片的版本,内容跟正式版是一样的。
OEM版本是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。如果买笔记型计算机或品牌计算机就会有随机版软件。包装不像零售版精美,通常只有一面CD和说明书(授权书)。
RTL版本(Retail)是真正的正式版,正式上架零售版。

这道题给你几个版本号,找出最新的稳定版,就是minor为偶数的。我的做法是排序,然后从最新的遍历就好了,麻烦的是输入数据的转化。

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include<stdio.h>
#include <sstream>
using namespace std;

int n;
struct nn
{
    int major,minor,patchlevel;
} node[1000];

bool cmp(nn a, nn b)
{
    if(a.major != b.major) return a.major>b.major;
    if(a.minor != b.minor) return a.minor>b.minor;
    return a.patchlevel>b.patchlevel;
}

int main()
{
    scanf("%d", &n);
    getchar();
    string s;
    for(int i=0; i<n; i++)
    {
        getline(cin, s);
        s.append(".");
        int ss=0, cnt=0, tmp;
        node[i].major=node[i].minor=node[i].patchlevel=0;
        while(1)
        {
            stringstream in;
            int p=s.find(".", ss);
            if(p == string::npos)
                break;
            in << s.substr(ss, p-ss);
            ss = p+1;
            in >> tmp;
            if(cnt == 0)
                node[i].major=tmp;
            else if(cnt ==1)
                node[i].minor=tmp;
            else if(cnt ==2 )
                node[i].patchlevel=tmp;
            cnt++;
        }
    }

    sort(node, node+n, cmp);
    int flag = 0;
    for(int i=0; i<n; i++)
    {
        if(node[i].minor%2==0)
        {
            cout << node[i].major;
            cout << ".";
            cout << node[i].minor;
            if(node[i].patchlevel != 0)
            {
                cout << ".";
                cout << node[i].patchlevel;
            }
            cout << endl;
            flag = 1;
            break;
        }

    }
    if(flag == 0)
        cout << "no available standversion" << endl;
    return 0;
}

2. 重复数字

给定三个数组,每个数组内部数字不重复,求三个数组的重复数字,从小到大输出。

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include<stdio.h>
#include <map>
#include <sstream>
using namespace std;

int main()
{
    map<int,int> xx;
    map<int ,int >::iterator ll;
    int length;
    for(int i=0; i<3; ++i)
    {
        scanf("%d", &length);
        for(int j=0; j<length; ++j)
        {
            int tmp;
            scanf("%d", &tmp);
            ll=xx.find(tmp);
            if(ll == xx.end())
                xx.insert(pair<int, int> (tmp, 1));
            else
                xx[tmp]++;
        }
    }
    int flag = 0;
    for ( ll = xx.begin(); ll != xx.end(); ll++ )
    {
        if (ll->second == 3)
        {
            if(flag == 0)
                cout << " ";
            cout << ll->first;
            flag = 1;
        }
    }
    return 0;
}

3. 死锁检查

给出线程id,拥有的资源,等待的资源,计算死锁的个数。
这题代码还未完成,先给个大致思路:
根据资源的拥有和等待,建立有向图,计算图中环的个数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值