linux c/c++ 面试题目整理(四)

31、C++空类是多大?为什么会这样?

       空类是1个字节,一个类中虚函数、成员函数(包括静态和非静态)和静态数据成员都不占用类对象的存储空间。有虚函数时,会有一个指向虚表的指针,大小为4个字节,类不为空时,为空的那1个字节是不计算的。
       空类之所以是1个字节,是因为求类大小就是求它实例化以后的大小,空类也是可以被实例化的,每个实例在内存中都会有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加1个字节。
       类的大小与构造函数、析构函数以及其他成员函数都无关。

32、两个vector<int>排序、交集和并集。

使用STL算法:
sort函数可用于排序;
并集使用set_union,例如:

vector<int> A, B, C;
A.resize(5), B.resize(5);

交集使用set_intersection,用法与并集一样;

33、下面代码一共有多少个进程?

    int main()
    {
        fork();
        fork()&&fork()||fork();
        fork();
        return 0;
    }

包含main进程在内,一共有20个进程。

34、互斥锁加条件变量使用的一个例子

    pthread1()
    {
        pthread_mutex_lock(lock_s);
        sum++;
        pthread_mutex_unlock(lock_s);
        if (sum >= 100)
        {
            pthread_cond_signal(&cond_sum_ready);//先发送一次
        }
    }
    pthread2()
    {
        pthread_mutex_lock(lock_s);
        while(sum < 100)
        {
            pthread_cond_wait(&cond_sum_ready, &lock_s);//会先执行pthread_MUTEX_UNLOCK进行解锁,然后休眠
        }
        sum = 0;
        pthread_mutex_unlock(lock_s);
    }

注意:最终哪个线程接收到信号,根据优先级来

35、实现string类的构造、析构和赋值函数

声明:

    class String
    {
        public:
            String(const char* str = NULL);
            String(const String & other);
            ~String();
            String & operator=(const String &other);
        private:
            char * m_data;
    };

定义:

    String::String(const char* str)
    {
        if (str == NULL)
        {
            m_data = new char[1];//str为空时,new一个字节
            m_data[0] = ‘\0’;
        }
        else
        {
            int len = strlen(str);
            m_data = new char[len+1];
            strcpy(m_data, str);
        }
    }
    String::String(const String& other)
    {
        int len = strlen(other.m_data); 
        m_data = new char[len+1];
        strcpy(m_data, other.m_data);
    }
    String::~String()
    {
        if (m_data != NULL)
        {
            delete[] m_data;
            m_data = NULL;
        }
    }
String & operator=(const String &other)
    {
        if (this == &other) //检查自赋值
            return *this;
        delete[] m_data; //将之前的析构
        int len = strlen(other.m_data);
        m_data = new char[len+1];
        strcpy(m_data, other.m_data); //深拷贝
        return *this;
    }

36、linux下怎样查找最新更新的文件

ls –ltr 按时间反序排序当前文件夹中文件
find ./ type f –mtime -1 查找最近一天内更改的文件

37、linux怎样查找包含指定内容的文件

grep –nr “指定内容” *.ini //指定文件类型时,n是行号,r递归搜索子目录

38、简单介绍下shell脚本

       shell就是一个命令行解释器,是一个用c语言编写的程序
       而shell脚本则是一串命令的集合,是将shell的语法、命令,通过管道、循环、条件判断等按照一定的逻辑组合在文本文件中,便形成了一个脚本,这个脚本是用shell来解释的。

39、快速排序、选择排序、插入排序、冒泡排序、归并排序

       快速排序:选定一个中间值,然后循环,将比该值小的放入它的左边,比它大的放入它的右边,接着对左右两边进行同样的操作,那么最后他们就是排好序的,并且是按照从小到大的顺序排的。代码如下:

    void quick_sort(int s[], int l, int r)
    {
        if (l < r)
        {
            int I = l,j=r, x = s[l];
            while(I < j)
            {
                while(I < j && s[j] >= x)
                {
                    j--;
                }
                if ( i< j)
                    s[i++] = s[j];
                while( I < j && s[i] < x )
                {
                    i++;
                }
                if ( I < j)
                {
                    s[j--] = s[i];
                }
                s[i] = x;
                quick_sort(s, l, i-1);
                quick_sort(s, i+1, r);
            }
        }
    }

//TODO:选择排序、冒泡排序等
时间复杂度:

  • 堆排序、归并排序 O(nlogn)
  • 选择、插入、冒泡 O(n2)
  • 快速排序理想情况下 O(nlogn),最差的时候 O(n2)

40、linux什么情况下可能产生死锁?

  1. 一个进程或者线程因请求资源A阻塞时,对资源B不释放,另一个进程则请求资源B,但对A不释放;
  2. 在加锁时轮询某数据,循环条件设置不当;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,766评论 0 38
  • 不知文章标题该写什么,因为我写的东西都是给我自己的,所以也没有什么标题的,就是即兴发挥写写我最近的感想和想法,帮我...
    不是我也好阅读 177评论 0 0
  • 周末下午难得给自己独处的空间,喜欢这样的天气,独自一人坐在咖啡店给自己独处的一点点时间… 我是在逃避家庭 工作 吗...
    melody静阅读 199评论 0 0
  • 作品名称:《怀念不如相见》 作品简介:天涯共此时,希望各位都能团聚,都能团聚。 作品名称:《望月》 作品简介:“举...
    南航航天学院阅读 1,316评论 2 5