1.Linux系统应用在哪些领域
2.VM虚拟机网络模式有NAT、主机、桥接,有什么区别
3.VM虚拟机快照功能有什么用,怎么用
4.VM虚拟机和win文件共享有哪几种方式
—————————————————————————————————————————————————
1.在/tmp/目录下创建test.txt文件,内容为: Hello,World! ,用一个命令写出来。
echo “Hello, World” > /tmp/test.txt
2.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。
ls -l | grep test.txt
chmod g+x,o+x test.txt
3.查找linux系统下以config结尾,并备份到/data/backup/目录下。
find / -name *config -exec cp {} /data/backup \
4.创建 test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。
chown abc.root test.txt
5.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。
cat test.txt,head test.txt,tail test.txt,vim test.txt, more test.txt,less test.txt
head -3 test.txt
tail -1 test.txt
6.查看linux服务器IP的命令
ip addr
ifconfig
netstat -tnlp
7.将普通用户test加入root组的命令是
sudo -s
visudo
root ALL=(ALL:ALL) ALL
,在下面添加test ALL=(ALL:ALL) ALL
—————————————————————————————————————————————————
1.何谓文件?
2.何谓文本文件?何谓二进制文件?
3.何谓字符编码?对于中文来说,GBK和UTF-8一般各占几个字节?
4.对于编译性语言,源文件到可执行文件做了哪些处理?
5.综合上述问题,请解释:
何谓编译器?
将源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的程序。
编译器究竟做了哪些事?
词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、目标代码优化
如何设计一门语言?
(1)设计语言的特性。
(2)定义语言的单词、语法和语义。
(3)实现编译器或者解释器将程序翻译为计算机底层表示。
(4)生成计算机程序的二进制存储格式。
(5)完善语言的运行时环境和标准库。
(6)对(5)进行引申
何谓链接器?
将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件的程序。
何谓解释器?
能够把高级编程语言一行一行直接转译运行的程序。
所谓编译型语言和解释型语言的区别?
编译型语言,在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。
解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。
前一个问题的本质是_______的区别,为什么?
编译。编译型语言的编译和执行分开,解释型语言执行的时候才翻译。
—————————————————————————————————————————————————
1、什么是大小端字节序?
2、如何通过语言判断字节序,请用目前的知识点(变量+运算符+输出函数)判断大小端。
一字节表示的数范围为0-2^8,即2位十六进制数,0x12345678占4字节,即一个整形大小。
联合类型中的几个变量公用一个内存位置,对union型成员的存取都是相对于该联合体基地址的偏移量为0处开始,也就是联合体的访问不论对哪个变量的存取都是从union的首地址开始的。通过检测第一个字节存放的数据即可判断大小端。
代码:
#include
union{
char ch;
int i;
}un;
int main(){
un.i = 0x12345678;
if(un.ch == 0x12){
printf("big endian\n");
}else
{
printf("small endain\n");
}
return 0;
}
—————————————————————————————————————————————————
将源文件变成可执行文件称为编译过程,请问:
对编译效率影响最大的是哪个步骤?
推导C++的模板
如何提升编译效率?既编译效率的优化。
(1)在头文件中使用前置声明,而不是直接包含头文件。
(2)使用Pimpl模式
(3)高度模块化
(4)删除冗余的头文件
(5)预编译头文件(PCH)
引自云梦之殇的新浪博客:http://blog.sina.com.cn/s/blog_6cf921f301014gbc.html
—————————————————————————————————————————————————
1.什么是初级程序员?
2.如何进阶为高级程序员?
3.非专业性知识上,初级程序员需要具备哪些特质,才能进阶为高级程序员呢?
4.这些特质现阶段你个人具备了多少呢?
—————————————————————————————————————————————————
1.程序是什么?
2.程序由哪些部分组成?
3.可执行文件运行起来叫做进程,运行这个操作做了哪些事?
4.你觉得程序员是怎么分级的?
—————————————————————————————————————————————————
1.static 修饰的变量存储在内存的什么区中
https://www.cnblogs.com/protected/p/6419217.html
2.简述下变量的作用范围,以及你们对变量的理解
3.if 语句和三目运算符的的比较,简述各自的优缺点
—————————————————————————————————————————————————
typedef struct bb
{
int id;
double weight;
float height;
}BB;
typedef struct aa
{
char name[2];
int id;
short score;
short grade;
BB b;
}AA;
这两个结构体 分别占用多大的内存,为什么?
—————————————————————————————————————————————————
1.用宏定义写出swap(x,y),即交换两数。
#define swap(x,y) y=x+y; x=y-x; y=y-x
2.写一个“标准”宏,这个宏输入两个参数并返回较小的一个
#define min(x,y) ((x)>(y)?(y):(x))
—————————————————————————————————————————————————
某实验室,现有64瓶药水,其中一瓶会致死。现在你可以用小白鼠来测试药水。小老鼠在吃了有毒的药水后,需要3天才会死亡。现在你只有三天时间,请问最少需要多少只老鼠就可以找出有毒的药水。
—————————————————————————————————————————————————
你的公司有一个巨大的C++代码库,是多年来数十名乃至数百名工程师努力工作的成果。你发现需要对这些代码进行大规模的重构,比如从32位升级到64位,或是修改使用数据库事务的方式,或是因为需要升级C++编译器,语法和语义全部(又)变了。你的任务就是把代码调通了。你会怎么做?
—————————————————————————————————————————————————
请问下图中哪个循环体运行效率更高?为什么?
for (i = 0 ; i < 100 ; i++){
for (j = 0 ; j < 5 ; j++){
Action();
}
}
for (i = 0 ; i < 5 ; i++){
for (j = 0 ; j < 100 ; j++){
Action();
}
}
—————————————————————————————————————————————————
1.分析编译期错误,链接期错误,运行期错误
2.请分析代码中的变量储存在bss\data\stack等哪个段?
#include
#include
#include
int z = 9;
int a;
static int b =10;
static int c;
void swap(int* x,int* y) {
int temp;
temp=*x;
*x=*y;
*y=temp;
}
int main() {
int x=4,y=5;
swap(&x,&y);
printf(“x=%d,y=%d,z=%d,w=%d\n”,x,y,z,b);
return 0;
}
—————————————————————————————————————————————————
请设计一款加减乘除计算器,要求能输入小数,并对非数字的输入进行报警。同时编写代码规范整洁。
#include
int main() {
float a,b,result;
char op;
bool judge;
int p;
while(1){
p = scanf("%f%c%f",&a,&op,&b);//p的值是成功赋值的变量个数
switch( p ) {
case 0:
getchar();//清除掉残留在输入流的错误输入,如果不清除则第二次循环的scanf会读取残留的错误输入而不会读取屏幕输入,表现为无限重复死循环
getchar();
getchar();
judge = false;
break;
case 1:
getchar();
getchar();
judge = false;
break;
case 2:
getchar();
judge = false;
break;
}
switch ( op ) {
case '+':
result=a+b;
break;
case '-':
result=a-b;
break;
case '*':
result=a*b;
break;
case '/':
if ( b==0 )
judge = false;
else
result=a/b;
break;
default:
judge = false;
break;
}
if (judge)
printf("%.2f\n",result);
else
printf("data erro\n");
printf("----------\n");
judge = true;
}
}
—————————————————————————————————————————————————
这是某位同学对昨天计算器的回答。请大家基于他的这种设计模式,优化异常输入报警这个功能,要求不允许程序报警导致异常,能正常执行之后的操作。
#include
#include
#include
//res:用于储存接收到的文本
//head:用于储存动态编写的程序头
//tail:用于储存动态编写的程序尾
char res[1000];
char final[2000];
const char * head = "#include \nint main(){\nprintf(\"\%f\\n\",(float)(" ;
const char* tail = "));return 0;}";
int i=1;
//这个程序就是你输入一个文本,然后用c语言写一个程序(head和tail负责补全程序),编译并执行。。
int main(){
while(i){
printf("请输入表达式!(别超过1000个字符)\n");
scanf("%s",res);
//按用户输入将程序文本补全,并写入dynam.c
sprintf(final,"%s%s%s",head,res,tail);
FILE *fpWrite=fopen("dynam.c","w");
fprintf(fpWrite,"%s",final);
fclose(fpWrite);
//编译并执行,gcc会自动检测,输入不对劲肯定就执行不了
system("gcc dynam.c -o trueCalcu");
system("./trueCalcu");
printf("您还要继续嘛?继续请输入1,退出请输入0:__\b\b");
scanf("%d",&i);
}
return 0;
}
改进代码:
#include
#include
#include
//res:用于储存接收到的文本
//head:用于储存动态编写的程序头
//tail:用于储存动态编写的程序尾
char res[1000];
char final[2000];
const char* head = "#include \nint main(){\nprintf(\"\%f\\n\",(float)(" ;
const char* tail = "));return 0;}";
int i=1;
float a,b,result;
char op;
bool judge;
int p;
//这个程序就是你输入一个文本,然后用c语言写一个程序(head和tail负责补全程序),编译并执行。。
int main(){
while(i){
//改动开始
do{
printf("请输入表达式!(别超过1000个字符)\n");
p = scanf("%f%c%f",&a,&op,&b);//p的值是成功赋值的变量个数
judge = true;
switch( p ) {
case 0:
getchar();//清除掉残留在输入流的错误输入,如果不清除则第二次循环的scanf会读取残留的错误输入而不会读取屏幕输入,表现为无限重复死循环
getchar();
getchar();
judge = false;
printf("d\n");
break;
case 1:
getchar();
getchar();
judge = false;
printf("dd\n");
break;
case 2:
getchar();
judge = false;
printf("ddd\n");
break;
}
if(op!='+' && op!='-' && op!='*' && op!='/'){
judge = false;
}
if (!judge){
printf("data erro\n");
}
printf("----------\n");
}while(!judge);
//改动结束
sprintf(res,"%.2f%c%.2f",a,op,b);
//按用户输入将程序文本补全,并写入dynam.c
sprintf(final,"%s%s%s",head,res,tail);
FILE *fpWrite=fopen("dynam.c","w");
fprintf(fpWrite,"%s",final);
fclose(fpWrite);
//编译并执行,gcc会自动检测,输入不对劲肯定就执行不了
system("gcc dynam.c -o trueCalcu");
system("./trueCalcu");
printf("您还要继续嘛?继续请输入1,退出请输入0:__\b\b");
scanf("%d",&i);
}
return 0;
}
—————————————————————————————————————————————————
1.写出 float A 和“零值”比较的 if语句
Const float EPSINION=0.00001;
If((A>=EPSINION)&&(A<=EPSINION))
2.以下代码有什么问题?该怎么改?
int main(){
char a;
char *str = &a;
strcpy(str,"how r u");
printf(str);
return 0;
}
—————————————————————————————————————————————————
1.谈谈对数组的理解
2.执行下面代码后,数组里存放的值是什么
int m[5] = {1,2,3,4,5};
int i = 2;
int y = 10;
m[i++] += y;
—————————————————————————————————————————————————
解释下下面的变量,什么是可变的,什么是const的
const char *p; //*p不可变,p可变
const (char *) p; //语法错误
char* const p; //*p可以改变 p不能改变
(char*) const p; //语法错误
const char* const p; //p和*p都不可以改变
—————————————————————————————————————————————————
分别用demo测试一下这几个指针的区别
p++ 与 (p++) *p++与(*p)++
p++ | p自增 |
---|---|
(p++) | p自增 |
*p++ | p自增 |
(*p)++ | p指向的变量自增 |
—————————————————————————————————————————————————
简述下 结构体 枚举 联合体 的共同点和区别
—————————————————————————————————————————————————
有下面三个结构体,求 下面3个结构体的内存大小
typedef struct cc
{
unsigned int a:2;
unsigned int b:1;;
unsigned int c:2;
}CC;
typedef struct bb
{
int id;
double weight;
float height;
}BB;
typedef struct aa
{
CC c;
char name[2];
int id;
short score;
short grade;
BB b;
}AA;
分别为:4,24,40
—————————————————————————————————————————————————
不用库函数,如何最精简的将大写字母变成小写字母?如:‘A’变成‘a’
‘a’=‘A’+32
—————————————————————————————————————————————————
1.main函数的参数和返回值有什么意义?
参数
(1)C语言规定main函数的参数只能有两个,为argc和argv,main函数的函数头可以写为:main (int argc,char *argv[])。
(2)main函数的参数值是从操作系统命令行上获得的
(3)argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。
返回值
main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统),让操作系统判断程序的执行情况(是正常结束还是出现异常)。
2.调用main函数之前发生了什么?
—————————————————————————————————————————————————
数组越界有什么危害?怎么避免数组越界
—————————————————————————————————————————————————
请画出Smart_Home的变量内存分布示意图,并优化两个结构体使得内存占用最少。
struct Owner{
unsigned char ID:3;
short Temp;
unsigned char Air:2;
}
struct Smart_Home{
unsigned char Address[2];
unsigned char door:1;
struct Owner p;
unsigned char Room_ID:4;
unsigned char Light:3;
}