zoukankan      html  css  js  c++  java
  • 面试题——中

    1. static关键词的用途

      这个简单的问题很少有人能回答完全。在C语言中,关键字static 有三个明显的作用:
      1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
      2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
      3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

    2. 指针和引用的区别

      (1) 引用必须被初始化,指针不必。
      (2) 引用初始化以后不能被改变,指针可以改变所指的对象。
      (3) 不存在指向空值的引用,但是存在指向空值的指针。

    3. 写出下列代码的输出

    4. 以下代码输出结果

    #include <stdlib.h>
    #include <stdio.h>
    #include <stdarg.h>
    int main()
    {
        int a,b,c,d;
        a=10;
        b=a++;
        c=++a;
        d=10*a++;
        printf("%d,%d,%d,%d",a,b,c,d);
        
        return 0;
    }

      答案:13,10,12,120

    5. 以下三个指针的区别

      (1). char * const p;意思a 是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)

      (2). char const * p;意味着a 是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)

      (3). const char * p;意味着a 是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)

    6. 以下代码中两个sizeof的用法有问题吗?

    #include <stdio.h>
    void Uppercase (char str[])
    {
        for(size_t i=0;i<sizeof(str)/sizeof(str[0]);i++)
            if(str[i]>'a'&&str[i]<'z')
                str[i]-=('a'-'A');
    };
    main()
    {
    char str[]="abcDe";
    printf("str字符长度为%d",sizeof(str)/sizeof(str[0]));
    Uppercase(str);
    printf("str字符为%s",str);
    }

    7. 进程间通讯方式有几种?

      管道 命名管道 消息队列 共享内存

    8. 文件中有一组整数,要求排序后输出到另一文件中

      

    #include <iostream>
    #include <vector>
    #include <fstream>
    
    using namespace std;
    void BubbleSort(vector<int>& array)
    {
        for (int i=0;i!=array.size();i++)
        {
            for (int j=array.size()-1;j!=i;j--)
            {
                if (array[j]<array[j-1])
                {
                    swap(array[j],array[j-1]);
                }
            }
        }
    }
    
    void swap(int* a,int* b)
    {
        int temp;
        temp=*a;
        *a=*b;
        *b=temp;
    }
    void main()
    {
        vector<int> data;
        ifstream in("c:\data.txt");
        if (!in)
        {
            cout<<"file error!"<<endl;
            exit(1);
        }
        int temp;
        while(!in.eof())
        {
            in>>temp;
            data.push_back(temp);
        }
        in.close();
        BubbleSort(data);
        ofstream out("c:\result.txt");
        if (!out)
        {
           cout<<"file error!"<<endl;
           exit(1);
        }
        for(int i=0;i<data.size();i++)
            out<<data[i]<<"  ";
        out.close();
    }

    9. 指出下列代码中错误//

    10. Linux系统中添加删除用户、设置密码的方式、设置IP地址的方式

      添加一个test新用户  useradd test或者adduser test

      (1.添加完成后,打开/etc/passwd,可以看到最后一行新增了一行记录:test  2.在根目录下/home/下新增一个test的文件夹)

      (查看test新用户的密码:nano /etc/shadow,显示为!!,表示密码是不可用的)

      (需要对新用户test设置一个新的密码,有两种方法:1.使用passwd命令,使用passwd设置密码?passwd test,在/etc/shadow内显示乱码。

      2.使用usermod命令,使用usermod设置test密码为111111,执行以下命令:usermod -p 111111 test 。

      打开/etc/shadow,密码在/etc/shadow就可以看到,就是所谓的明码,很危险,其他人很容易获得此账号密码。)

    11. Linux系统中查看磁盘空间、进程情况检查、日期查看的命令

        df -hl 查看磁盘剩余空间

      df -h 查看每个根路径的分区大小

      du -sh [目录名] 返回该目录的大小

      du -sm [文件夹] 返回该文件夹总M数

      ps-aux  

    12. 操作系统中,设置NTP服务的方式

      ubuntu server ntp时间同步服务器安装及使用
      一、服务端
      1 apt-get install ntp
      2 启动服务/etc/init.d/ntp start
      3 vi /etc/ntp.conf 修改为如下
      restrict default nomodify notrap noquery
      restrict 127.0.0.1
      restrict 网段 mask 255.255.255.0 nomodify
      server 0.pool.ntp.org
      server 1.pool.ntp.org
      server 2.pool.ntp.org
      server 127.127.1.0 # local clock
      fudge 127.127.1.0 stratum 10
      driftfile /var/lib/ntp/drift
      broadcastdelay 0.008
      keys /etc/ntp/keys
      4 重启ntp服务
      /etc/init.d/ntp restart
      二、客户端
      先安装apt-get install ntp
      1 使用ntpdate命令
      /usr/sbin/ntpdate 10.91.0.10 //ip为10.91.0.10的ntp服务器同步时间
      2 设置定时同步。
      vi /etc/crontab
      30 01 * * * /usr/sbin/ntpdate 10.91.0.10
      系统便会在每天早上1点30分自动将系统时间同步到ntp服务器的时间。
      当然这里crontab的时间是指客户端的时间,同步后等同于ntp服务器的时间。

    13. oracle 数据库正常开启关闭的操作过程

      以oracle身份运行数据库:
      $sqlplus /nolog >connect / as sysdba >startup
      遇到无法启动,执行关闭命令 启动关闭监听$lsnrctl >start >stop
      以oracle身份关闭数据库:
      $sqlplus /nolog >connect / as sysdba >shutdown immediate

    14. $oracle_base 、 $oracle_home 、 $oracle_sid 各指什么意思

      ORACLE_BASE下是admin和product
      ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东。
      ORACLE_HOME比ORACLE_BASE目录要更深一些。也就是说:ORACLE_HOME=$ORACLE_BASE/product/version
      ORACLE_SID参数则是操作系统的环境变量。在多个实例的服务器中,ORACLE通过ORACLE_SID决定启动哪个实例。
      一般,如果服务器只有一个实例,ORACLE_SID的值和实例的名称以及数据库名称相同。

    15. 数据导入导出的方法

      数据的导入
      1 将D:daochu.dmp 中的数据导入 TEST数据库中。
      imp system/manager@TEST file=d:daochu.dmp
      上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
      在后面加上 ignore=y 就可以了。
      2 将d:daochu.dmp中的表table1 导入
      imp system/manager@TEST file=d:daochu.dmp tables=(table1)
      基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。
      注意:
      你要有足够的权限,权限不够它会提示你。
      数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。
      数据导出:
      将数据库中system用户与sys用户的表导出
      exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
      exp hkb/hkb@boss_14 full=y file=c:orabackuphkbfull.dmp log=c:orabackuphkbfull.log;
      导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!
      同名用户之间的数据导入:imp hkb/hkb@xe file=c:orabackuphkbfull.dmp log=c:orabackuphkbimp.log full=y
      不同名之间的数据导入:imp system/test@xe fromuser=hkb touser=hkb_new file=c:orabackuphkbfull.dmp log=c:orabackuphkbimp.log;

    16. 编写存储过程(procedure)完成以下功能

      (1)若系统当前时间为星期一,则从1开始循环100次,并将结果输出;

      (2)若系统当前时间为星期二,则从1开始循环1000次,并将结果输出;

      (3)若系统当前时间为星期三的早两点,则输出当前日期时间;

      (4)若系统当前时间为星期四到星期日,则输出当前日期时间;

    17. 完成使用sql完成以下操作

      建立一个数据库表,并在表中存储以下信息;

      2013/5/9  A

      2013/5/9  A

      2013/5/9  B

      2013/5/9  B

      2013/5/8  A

      2013/5/8  B

      2013/5/8  B

      2013/5/9  B

        delimiter $$

        CREATE TABLE `test` (

        `Ri_Qi` date DEFAULT NULL,

        `Deng_Ji` varchar(1) DEFAULT NULL,

        ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8$$

      insert into test (Ri_Qi,Deng_Ji)values(2013/5/9,'A',2013/5/9,A,2013/5/9,B,2013/5/9,B,2013/5/8,A,2013/5/8,B,2013/5/8,B,2013/5/9,B);

    18. 编写sql语句,完成以下操作。

      A  B

      2013/5/9  2 2

      2013/5/8  1 2

      创建使用事务的存储过程

      delimiter //

      create procedure test()

      BEGIN

      DECLARE foreign_key_conflict CONDITION FOR 1452; 

      DECLARE CONTINUE HANDLER FOR foreign_key_conflict 

        BEGIN

        ROLLBACK;

        END;

      START TRANSACTION;

      SELECT  DISTINCT DengJi FROM test ; 

      SELECT Ri_Qi, Deng_Ji, SUM(Line) AS Amount

      FROM ( SELECT Ri_Qi, Deng_Ji, 1 AS Line FROM test )

      GROUP BY Ri_Qi, Deng_Ji

      ORDER BY Ri_Qi ;

      COMMIT;

      END;

      //

    1. 调用存储过程

      call test();

  • 相关阅读:
    回溯算法
    cannot import name 'np' in mxnet
    Linux后台运行任务 nohup &
    为Windows Terminal添加右键菜单
    Outlook设置QQ邮箱
    逻辑回归 logistic regression
    Python添加自定义目录到sys.path
    强化学习 策略梯度
    为Windows terminal preview添加右键菜单
    双系统使用Linux引导
  • 原文地址:https://www.cnblogs.com/qq1129496211/p/4098625.html
Copyright © 2011-2022 走看看