C面试题
1、sizeof()和strlen()使用?
答案:
1.从功能定义,strlen功能,要查找字符串的长度,sizeof功能是用来寻找指定的变量或变量类型的存储器占用
尺寸;
2.sizeof是运算符,而strlen是C库函数strlen仅仅能用char*做參数,且以'/0'结尾的;
对于静态数组处理:
char str[20]="0123456789";
strlen(str)=10; //表示数组中字符串的长度
sizeof(str)=20; //表示数组变量分配的长度
对于指针处理:
char *str="0123456789";
strlen(str)=10; //表示字符串的长度
sizeof(str)=4; //表示指针变量的所占内存大小
sizeof(*str)=1; //表示'0'这个字符变量的所占内存大小
2、 struct 和 class的差别?
答:
(1)类中的成员默认是private的,当是能够声明为public,private 和protected,结构中定义的成员默认的都是
public.
(2)结构中不同意定义成员函数,当是类中能够定义成员函数.
(3)结构不能够存在继承关系,当是类能够存在继承关系.
3、 strcpy(), strcat(), strcmp,strlen(), strchr(), memcpy(), memcmp(), memset()的编写?
4、 内存的分配方式的分配方式有几种?
答:
(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个执行期间都存在。
比如
全局变量。
(2)在栈上创建。在运行函数时,函数内局部变量的存储单元都能够在栈上创建,函数运行结束时这些存储单元
自己主动被释放。栈内存分配运算内置于处理器的指令集中,效率非常高,可是分配的内存容量有限。
(3)从堆上分配,亦称动态内存分配。程序在执行的时候用malloc或new申请随意多少的内存,程序猿自己负责在
何时用free或delete释放内存。动态内存的生存期由我们决定,使用很灵活,但问题也最多。
5,、解释堆和栈的差别?
答:
(1)栈区(stack):由编译器自己主动分配释放 ,存放函数的參数值,局部变量的值等。其操作方式相似于数据结构中
的栈。
(2)堆区(heap):一般由程序猿分配释放, 若程序猿不释放,程序结束时可能由OS回收 。
注意它与数据结构中的
堆是两回事,分配方式倒是相似于链表.(主要有:malloc/free,new/delete)
6,、枚举的使用方法,以及它与宏的差别?
答:
枚举(enum)作用:定义一组常量,并且这些常量组成了一个集合。
当我们将emun參数传递给函数时,假设传递了
一个不属于这个集合的參数,编译器报错。
差别:
枚举是类型,而宏没有类型。
枚举将检查其语法,而宏是简单的文本替换。
7、 const的使用方法,以及声明const变量与宏的差别?
答:
const的使用方法有四种:
a): const对象和const类型的对象;
b): const指针 和 指向const的指针 及两者结合;
c): const 參数修饰 和 參数返回类型的const修饰;
d): const类成员 和 const 成员函数;
差别:
const常量有数据类型, 而宏常量没有数据类型。编译器能够对前者进行类型安全检查,而对后者仅仅能进行字符
替换,没有类型
安全检查。并且字符替换可能会带来料想不到的边界效应。
有些集成化工具能够对const常量进行调试, 但不能对宏量进行调试。
8、函数assert的使用方法?
答:
断言assert是仅在debug版本号起作用的宏,用于检查“不应该“发生的情况。
程序猿能够把assert看成一个在任
何系统状态下都能够安全使用的无害測试手段。
9、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)?
答:
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
10、 写一个"标准"宏MIN,这个宏输入两个參数并返回较小的一个?
答:
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
11、嵌入式系统中常常要用到无限循环,你怎么样用C编写死循环呢?
答:
这个问题用几个解决方式。
我首选的方案是:
while(1)
{
}
一些程序猿更喜欢例如以下方案:
for(;;)
{
}
12、用变量a给出以下的定义
a) 一个整型数(An integer)
答:a) int a; // An integer
b)一个指向整型数的指针( A pointer to an integer)
答:b) int *a; // A pointer to an integer
c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)
答:c) int **a; // A pointer to a pointer to an integer
d)一个有10个整型数的数组( An array of 10 integers)
答:d) int a[10]; // An array of 10 integers
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
答:e) int *a[10]; // An array of 10 pointers to integers
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)
答: f) int (*a)[10]; // A pointer to an array of 10 integers
g) 一个指向函数的指针,该函数有一个整型參数并返回一个整型数(A pointer to a function that takes an
integer as an argument and returns an integer)
答:g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an
integer
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型參数并返回一个整型数( An array of ten
pointers to functions that take an integer argument and return an integer )
答:h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument
and return an integer
13、关于内存对齐的问题以及sizof()的输出?
答:
编译器自己主动对齐的原因:为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于
,为了訪问未对齐的内存,处理器须要作两次内存訪问;然而,对齐的内存訪问仅须要一次訪问。
14、 static有什么用途?(请至少说明两种)
答:
(1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
(2) 在模块内(但在函数体外),一个被声明为静态的变量能够被模块内所用函数訪问,但不能被模块外其他函数
訪问。
它是一个本地的全局变量。
(3) 在模块内,一个被声明为静态的函数仅仅可被这一模块内的其他函数调用。
那就是,这个函数被限制在声明它
的模块的本地范围内使用。
15、引用与指针有什么差别?
答:
(1) 引用必须被初始化,指针不必。
(2) 引用初始化以后不能被改变,指针能够改变所指的对象。
(3) 不存在指向空值的引用,可是存在指向空值的指针。
16、什么是平衡二叉树?
答:
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。
17、堆栈溢出通常是由什么原因导致的?
答:
没有回收垃圾资源。
18、什么是预编译?何时须要预编译?
答:
(1)总是使用不常常修改的大型代码体。
(2)程序由多个模块组成,全部模块都使用一组标准的包括文件和同样的编译选项。
在这样的情况下,能够将全部
包括文件预编译为一个预编译头。
19、队列和栈有什么差别?
答:
队列先进先出;栈后进先出。
20、数组和链表的差别?
答:
数组:数据顺序存储,固定大小。
链表:数据能够随机存储,大小可动态改变;
21、为什么数组名作为參数,会改变数组的内容,而其他类型如int却不会改变变量的值?
答:
当数组名作为參数时,传递的实际上是地址。而其它类型如int作为參数时,因为函数參数值实质上是实參的一
份拷贝,被调函数内部对形參的改变并不影响实參的值。
22、数据结构和算法:
A:查找:
(1)二分法查找;
(2)
(3)
(4)
B:写出下列算法的时间复杂度和实现排序:
(1)冒泡序列;
(2)选择排序;
(3)插入排序;
(4)高速分拣;
(5)堆排序;
(6)归并。
23、写gbk_strlen功能,计算包含字符串的字符的长度,中国作为一个字符处理。已知:双字节字符编码,其中
的第一个字节<0,最后字节0~63外;(假设一个字节-128~127)?
C面试题的更多相关文章
- .NET面试题系列[8] - 泛型
“可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...
- 关于面试题 Array.indexof() 方法的实现及思考
这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...
- 对Thoughtworks的有趣笔试题实践
记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- JAVA面试题
在这里我将收录我面试过程中遇到的一些好玩的面试题目 第一个面试题:ABC问题,有三个线程,工作的内容分别是打印出"A""B""C",需要做的 ...
- C++常考面试题汇总
c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...
- .NET面试题系列[4] - C# 基础知识(2)
2 类型转换 面试出现频率:主要考察装箱和拆箱.对于有笔试题的场合也可能会考一些基本的类型转换是否合法. 重要程度:10/10 CLR最重要的特性之一就是类型安全性.在运行时,CLR总是知道一个对象是 ...
- 我们公司的ASP.NET 笔试题,你觉得难度如何
本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识. 第1-3题会使用到一个枚举类,其定义如下: public enum QuestionType { Text = , ...
- 我设计的ASP.NET笔试题,你会多少呢
本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...
- 猫哥网络编程系列:详解 BAT 面试题
从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...
随机推荐
- WPF3D学习,立方体的绘制
原文:WPF3D学习,立方体的绘制 以此为一个好的开始吧!一直都太懒,坚持写文章是个不错的开始!碰巧最近在研究WPF3D这块的知识,也为了练练自己的写作水平,整理这篇文章.新手上路,多多关照! 本文先 ...
- AutoFac使用方法总结:Part II
事件 AutoFac支持三种事件:OnActivating,OnActivated,OnRelease.OnActivating在注册组件使用之前会被调用,此时可以替换实现类或者进行一些其他的初始化工 ...
- Java Web整合开发(79) -- Struts 2
一. Struts 2.x 概述 不继承任何类的Action Struts 2的Action并不一定要实现Action接口或者继承ActionSupport,任何POJO都可以做Action,只要这个 ...
- FPGA机器学习之学习的方向
经过了2个月对机器学习的了解后.我发现了,机器学习的方向多种多样.网页排序.语音识别,图像识别,推荐系统等.算法也多种多样.看见其它的书后,我发现除了讲到的k均值聚类.贝叶斯,神经网络,在线学习等等, ...
- quick 2.23 它们的定义c++代码lua与总结的一些细节
它们的定义c++代码lua与总结的一些细节 参考:点击打开链接 1.自己定义 XXX.cpp .XXX.h 2.D:\quick\quick-cocos2d-x-2.2.3-rc\lib\cocos2 ...
- 由单页面web应用引发的企业应用问题
由于单页面web应用的流行,client与server端之间都对应的产生了一些微妙的变化,比方,client原来仅仅是用来展示页面和理清逻辑,而现在逐渐转变成了一个可以进入驱动状态的应用程序. 未来的 ...
- HDU 4311 Meeting point-1 && HDU 4312 Meeting point-2
这俩个题 题意::给出N(<1e5)个点求找到一个点作为聚会的地方,使每个点到达这里的距离最小.4311是 曼哈顿距离 4312是 切比雪夫距离: 曼哈顿距离 :大家都知道 对于二维坐标系a( ...
- 公钥\私人 ssh避password登陆
相关概念以前见过,决不要注意,使用公共密钥管理之前,腾讯云主机的备案机,非常头发的感觉,查了一下相关资料,这里总结下: 字符a:192.168.7.188 (ubuntu) 字符b:192.168.7 ...
- win7下go web之revel
win7下go web之revel安装 接着上回记录的win7下go环境搭建,go的开发,现在除了sublime外,LiteIDE比较推荐,下载链接 下载安装后直接打开,需要配置下go环境(本机使 ...
- HDU ACM 1267 下沙的沙子有几粒?->DP
题意:m个H和n个D,从左開始数H的累积个数总不比D的累计数少的排列有多少种.比如,3个H和1个D共同拥有3种符合要求的排列H D H H,H H D H,H H H D. 分析:状态方程为,DP[ ...