程序员面试完全试题第一版

上传人:206****923 文档编号:90777682 上传时间:2019-06-16 格式:DOC 页数:51 大小:422KB
返回 下载 相关 举报
程序员面试完全试题第一版_第1页
第1页 / 共51页
程序员面试完全试题第一版_第2页
第2页 / 共51页
程序员面试完全试题第一版_第3页
第3页 / 共51页
程序员面试完全试题第一版_第4页
第4页 / 共51页
程序员面试完全试题第一版_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《程序员面试完全试题第一版》由会员分享,可在线阅读,更多相关《程序员面试完全试题第一版(51页珍藏版)》请在金锄头文库上搜索。

1、意见和建议发送邮件到:(大家一起来完善)目 录变量命名法4骆驼式命令法4匈牙利命名法4帕斯卡(pascal)命名法5嵌入式通用面试题61.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年)62.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。63. 预处理器标识#error的目的是什么?64. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?65. 用变量a给出下面的定义76. 关键字static的作用是什么?87关键字const是什么含意?88. 关键字volatile有什么含意 并给出三个不同的例子。99. 嵌入式系统总是要用户对变量或寄存器

2、进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。1010. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。1111. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展让标准C支持中断。具代表事实是,产生了一个新的关键字_interrupt。下面的代码就使用了_interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。1112

3、 . 下面的代码输出是什么,为什么?1113. 评价下面的代码片断:1214. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?1215. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:1316. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?13C语言面试题141.Union142.写出下列代码的输出内容143.请找出下面代码中的所以错误154.用两个栈实现一个队列的功能?要求给出算法和思路!165.

4、对于一个频繁使用的短小函数,在C语言中应用什么实现,在C+中应用什么实现?166.软件测试都有那些种类?167.强制类型转换168.为什么C语言中,一个结构体变量占内存的字节数有时候不等于各成员变量占字节数之和?179. 内存问题17数组指针19数组越界问题1910、memset ,memcpy 和strcpy 的根本区别?2011、ASSERT()是干什么用的2112.变量比较问题2113 编写strcpy函数2214 Struct对sizeof的详解2315. 自然对界2416. 指定对界2417. sizeof应用在结构上的情况2618. sizeof用法总结28C+面试题29编写类St

5、ring的构造函数、析构函数和赋值函数29析构函数和虚函数的用法和作用?31Android面试题31字符串处理面试题31用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。31用C语言实现函数void * memmove(void *dest,const void *src,size_t n)。memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。32编写一个函数,作用是把一个char组成的字符串循环右移n个。32非排序算法面试题33英文拼写纠错:在用户输入英文单词时,经常发生错误,我们需要对其进行纠错。假设已经有一个包含了正确英文单词的

6、词典,请你设计一个拼写纠错的程序。(1)请描述你解决这个问题的思路;(2)请给出主要的处理流程,算法,以及算法的复杂度;(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。33对于一个字节(8bit)的数据,求其中“1”的个数,要求算法的执行效率尽可能地高。35从一道笔试题谈算法优化39基本排序算法46冒泡排序程序:46选择排序程序:47二分查找算法:47网络面试题481TCP/IP 建立连接的过程?(3-way shake)482、ICMP是什么协议,处于哪一层?483、winsock建立连接的主要实现步骤?484、动态连接库的两种方式?487、IP组播有那些好处?49O

7、SI的七层网络结构图(功能及特点)49TCP/IP(功能及特点)49参考模型和TCP/IP参考模型的区别:OSI50请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?50交换机和路由器50变量命名法骆驼式命令法指混合使用大小写字母来构成变量和函数的名字。除第一个单词的首字母外,其他单词的首字母都使用小写字母,如:myFirstName。匈牙利命名法据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,匈牙利命名法是一种编程时的命名规范。基本原则是:变量名属性类型对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部

8、分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为 Switchboard时,变量全称应该为 frmSwitchboard。这样可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标签,那么就应命名成 lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交流代码。属性部分全局变量g_常量c_c+类成员变量m_静态变量s_类型部分指针p函数fn无效v句柄h长整型l布尔b浮点型(有时

9、也指文件)f双字dw字符串sz短整型n双精度浮点d计数c(通常用cnt)字符ch(通常用c)整型i(通常用n)字节by字w实型r无符号u描述部分最大Max最小Min初始化Init临时变量T(或Temp)源对象Src目的对象Dest帕斯卡(pascal)命名法是在命名的时候将首字母大写,如:程序代码public void DisplayInfo();string UserName;二者都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和骆驼命名法居多。嵌入式通用面试题1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年) #define SECONDS_PER_YEAR

10、(60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。#define MIN(A,B) (

11、A) = (B) (A) : (B)这个测试是为下面的目的而设的:1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。3). 懂得在宏中小心地把参数用括号括起来4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p+, b);3. 预处理器

12、标识#error的目的是什么?如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。死循环(Infinite loops)4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。我首选的方案是:while(1)一些程序员更喜欢如下方案:for(;)这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,我将用这个作为一个机会去探究他们这样做的基本原理。如果他们的基本答案是:“我

13、被教着这样做,但从没有想到过为什么。”这会给我留下一个坏印象。第三个方案是用 gotoLoop:.goto Loop;应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的BASIC/FORTRAN程序员。数据声明(Data declarations)5. 用变量a给出下面的定义a) 一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer)c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointerto an integer)d) 一个有10个整型数的数组

14、(An array of 10 integers)e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers tointegers)f) 一个指向有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)h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )答案是:a) int a; / An inte

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号