IT 常见面试题总结

001:static的定义和用法

A:static的定义:它是C++中很常见的修饰符、它被用来控制变量的存储方式和可见性。static被引入以告知编译器,将变量存储在静态存储区而不是栈上空间,static它会把变量的可见范围限制在编译单元中,使它成为一个内部链接,它的反义词为extern。

B:static的用法:静态成员是静态存储的,必须对其进行初始化。在类中定义静态成员可以实现多个对象之间的数据共享。在函数体内定义静态变量,此变量只能在这个函数内使用。在函数体外,模块内定义静态变量,此变量只能在模块体内被使用。

002:const的定义和用法

A:const的定义:const常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。因此,定义或说明常类型时必须进行初始化。

B:const的用法:在 c程序中,const的用法主要有定义常量、修饰函数参数、修饰函数返回值等3个用处。在c++程序中,它还可以修饰函数的定义体,定义类中某个成员为常态函数,即不改变类中的数据成员。被const修改的东西都要受到强制保护,可以预防意外的变动,能提高程序的健壮性。

003:inline的定义和用法

A:inline的定义:是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。C++中引入它的主要原因是用它替代C中表达式形式的宏定义

B:inline的用法:一般用于两种情况1)一个函数不断被重复调用2)函数只有简单的几行,且函数内不包含for、while、switch。关键字inline必须与函数定义体放在一起才能使用函数成为内联,仅将inline放在函数声明前面不起任何作用。

004:请简述深拷贝和浅拷贝的定义:

如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。

005:如果程序在运行中因内存错误而崩溃,有哪几种可能的原因:

A:内存泄漏 B:内存越界访问 C:野指针 D:访问空指针 E:引用未初始化的变量 F:不清楚的指针运算 G:结构图成员顺序发生变化 H:结构体大小变化

I:分配释放不配对 J:返回指向临时变量的指针 K:试图修改常量 L:误解传值和传引用 M:重名符合 N:栈溢出 O:字节顺序 P:多线程共享变量没有用valotile修饰

006:面向对象和面向过程的定义:

A:面向对象:软件开发的方法,是一种对现实世界理解和抽象的方法,是计算机编程发展到一定阶段的产物。面向对象=对象+类+继承+通信,如果一个系统使用这个4个概念设计和实现,则我们称该系统为面向对象。

B:面向过程:是一种以过程为中心的编程思想,这些都是以什么正在发生为目标进行编程,不用于面向对象是谁在受影响。

C:面向对象的作用:维护简单、可扩充性、代码重用

007:面向对象的三大特性:封装性、继承性、多态性

A:封装性:

B:继承性

C:多态性:简单的说就是“一个接口,多种方法”,即允许将子类类型的指针赋值给父类类型的指针。多态性一般都是通过虚函数、抽象类、覆盖、模板来实现。

008:用递归算法判断数组a[n]是否为一个递增数组

bool charge(int p[],int n)  
{  
   if(n==1)  
    return true;  
   else  
   {  
       if(p[n-1]>p[n-2])  
    {  
        return charge(p,n-1);  
    }  
    else   
     return false;  
   }  
}  

009:局域网一般由三部分组成:网络服务器、工作站、通信设备

010:IP地址一般由:网络号和主机地址

011:引用的定义和作为函数参数传递的作用:

A:引用就是一个变量的别名,对引用的操作和对变量操作完全一样。

B:引用作为函数参数传递,能够保证参数传递过程中不产生副本,提供传递效率,且通过const的使用,保证传递的安全性

012:函数strcmp和函数strcpy的区别:

int strcmp(char* src,char* dst) :比较两个字符串是否相等,当src==dst返回0,当src<dst返回负数,当src>dst返回正数

char* strcpy(char*src,char*dst):字符串拷贝函数

013:写一个简单的函数,将一个十六进制字符串转化为数字(大小不超过整形)

#include<iostream>
using namespace std;
long int hex2int(const char * srcStr) {
	char * dst;
	if (srcStr[0] == '0'&&srcStr[1] == 'x') {
		return strtol(srcStr, &dst, 0);
	}
	else
	{
		return strtol(srcStr, &dst, 16);
	}
}
int main() {
	char *myHex = "0x11";
	char *myHex2 = "11";
	cout << hex2int(myHex)<<endl;
	cout << hex2int(myHex2);
}

输出为:17 17

0014:写个函数判断整数是否是对称数

int is_duichen(int data)
{
    int tmp, new_data;
    
    tmp = data;
    new_data = 0;
    while(tmp)
    {
        new_data = new_data*10 + tmp/10;
        tmp = tmp/10;
    }
    
    if(new_data == data)
    {
        printf("%d is duichen \n", data);
        return 0;
    }
    else
    {
        printf("%d is NOT duichen \n", data);
        return -1;
    }
}
015:圆圈上顺时针排列着1,2,3……n这n个数,从1开始,顺时针隔一个拿走一个(1最先被拿走,下一个是3被拿走),问最后剩下是哪一个数?
分析:约瑟夫环的问题
n=1:1
n=2:2
n=3:2
n=4:4
n=5:2
n=6:4
n=7:6
n=8:8
n=9:2
n=……
发现当n=(2^k)+1,K>0,的时候,最后剩下的都是2.
假如:(2^k)+1<n<(2^(k+1)+1),要剩下(2^k)+1个数,就需要先去掉n-((2^k)+1)个数,
按题意,每两个数擦掉一个数,所以擦掉n-((2^k)+1)个数,需要擦掉的数是:2*(n-((2^k)+1)),
所以下一个起始的就是2*(n-((2^k)+1))+1
,所以剩下的就是2*(n-((2^k)+1))+1+1;代码实现如下:
#include<iostream>
#include <math.h>
using namespace std;
int yuesefu(int num[],int n,int k) {

	if(n==1){
		return 1;
	}else if(n==2){
		return 2;
	}else if(n>2)
	{
		return 2 *(n -(pow(2,k)+1)) + 1+1 ;
	}
}

int main() {
	int num[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	//因为   2^4-1+1<12<2^4+1,所以k=3
	cout<<yuesefu(num,12,3);
}
016:怎么定义动态数组:
int len;
cin >> len;
//用指针p指向new动态分配的长度为len*sizeof(int)的内存空间
int *p = new int[len];









  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
│ C++面试题大全.doc │ c与c++面试题汇总.doc │ java面试题集.txt │ ├─C++笔试题 │ (1)C,C++经典问题,及面试笔试题 .txt │ (2)cc++.txt │ (3)笔试题2.doc │ (4)笔试题.doc │ (5)想成为嵌入式程序员应知道的0x10个基本问题.txt │ (6)网络.操作系统.数据库.txt │ (7)如果你觉得你够牛就回答这几个问题.txt │ (8)以上文档中的明显错误.txt │ c,c++笔试.txt │ CC++笔试题系列.txt │ IT职场中外企面试最爱提的问题TOP10 .txt │ memset.memmove.strcmp.txt │ TC使用.txt │ 介绍自己的优缺点有技巧 .txt │ 多线程编程之一——问题提出.txt │ 多线程编程之三——线程间通讯.txt │ 多线程编程之二——MFC中的多线开发.txt │ 多线程编程之四——线程的同步.txt │ 排序.txt │ 最常问问题和最佳答案.txt │ 求职信 .txt │ 深入分析Windows和Linux动态库应用异同 .txt │ 用VC++5.0 定 制 和 调 用 动 态 链 接 库 .txt │ 聘面谈记录切忌随心所欲.txt │ 英语面试.txt │ 范式间区别.txt │ 金山_人力资源试题库_软件工程.doc │ 金山问题.txt │ 面试常见37个问题.doc │ 面试常见问题解析 .txt │ 面试应答中最忌讳的是什么.doc │ ├─java笔试题大集合及答案(另附各大公司笔试题) │ EJB方面.doc │ Java基础方面.doc │ 代码与编程题.doc │ 应聘Java笔试时可能出现问题及其答案.doc │ 求职笔试大全.pdf │ 用户必读.txt │ 线程编程方面.doc │ └─面试题java │ Core Javaceshiti.doc │ c_c++_mianshi.txt │ j2ee面试笔试题大汇总.txt │ java中的易混问题收集 -- 最大的IT资源网.txt │ JAVA常见问题.txt │ Java常见问题集锦 -- 最大的IT资源网.txt │ JAVA问题.txt │ Java陷阱一箩筐----面试题集.doc │ Java陷阱一箩筐----面试题集[zt].txt │ JAVA面试题.txt │ JAVA面试题集(1) -- 最大的IT资源网.txt │ JAVA面试题集(2) -- 最大的IT资源网.txt │ JAVA面试题集(3) -- 最大的IT资源网.txt │ JAVA面试题集(4) -- 最大的IT资源网.txt │ JAVA面试题集(5) -- 最大的IT资源网.txt │ JAVA面试题集(6) -- 最大的IT资源网.txt │ JAVA面试题集(7) -- 最大的IT资源网.txt │ JAVA面试题集(8) -- 最大的IT资源网.txt │ mian shi ti da an 2.txt │ mian shi ti da an1.txt │ mian shi ti.txt │ mianShi.pdf │ mst.pdf │ 追MM与Java的23种设计模式.txt │ 面试题.doc │ └─mianshiti 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt Java_util_package.txt java_util_test.txt
1.已知strcpy 函数的原型是: char *strcpy(char *strDest, const char *strSrc); 其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数, 请编写函数 strcpy 答案: char *strcpy(char *strDest, const char *strSrc) { if ( strDest == NULL || strSrc == NULL) return NULL ; if ( strDest == strSrc) return strDest ; char *tempptr = strDest ; while( (*strDest++ = *strSrc++) != ‘\0’) ; return tempptr ; } 3.12 main 函数执行以前,还会执行什么代码? (Autodesk) 答案:全局对象的构造函数会在main 函数之前执行。 3.13 描述内存分配方式以及它们的区别。 (Autodesk , Microsoft) 答案:1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块 内存在程序的整个运行期间都存在。例如全局变量,static 变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上 创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理 器的指令集。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申 请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内 存的生存期由我们决定,使用非常灵活,但问题也最多。 3.14 什么是虚拟存储器?virtual memory 怎样映射到physical memory?页面替换 算法有哪些? (Microsoft) 见操作系统 p238 页。掌握的页面替换算法NRU,FIFO,第二次机会页面替换 算法,LRU 3.15 有四个同样的容器,里面装满了粒数相同的药丸,正常药丸的质量为m,变 质药丸的质量为m+1,现在已知这四个容器中,有一个装的全是变质药丸,用电 子秤只称一次,找出哪个容器装的是变质药丸(Microsoft) 答案:把四个容器依次编号为1、2、3、4,然后从中分别取出1、2、3、4 粒药 丸,称这10 粒药丸的质量,如果质量为10m+1,则说明第一个容器装的是变质药 丸,如果为10m+2 则说明第二个装的变质药丸,依次类推。 3.16 比较一下C++中static_cast 和 dynamic_cast 的区别。 (Autodesk) 。。。。。。。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值