2022年中标软件面试题.docx

上传人:w*** 文档编号:23303919 上传时间:2022-06-29 格式:DOCX 页数:21 大小:23.43KB
返回 下载 相关 举报
2022年中标软件面试题.docx_第1页
第1页 / 共21页
2022年中标软件面试题.docx_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《2022年中标软件面试题.docx》由会员分享,可在线阅读,更多相关《2022年中标软件面试题.docx(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、2022年中标软件面试题、请填写 、请填写BOOL, float,指针变量 与“零值”比较的if语句。(10分) 请写出BOOL flag与“零值”比较的if 语句。(3分) 标准答案: if ( flag ) if ( !flag ) 如下写法均属不良风格,不得分。 if (flag = TRUE) if (flag = 1 ) if (flag = FALSE) if (flag = 0) 请写出floatx与“零值”比较的if 语句。(4分) 标准答案示例: const float EPSINON = 0.00001; if (x >= - EPSINON) (x <= EP

2、SINON) 不行将浮点变量用“=”或“!=” 与数字比较,应当设法转化成 “>=”或“ <=”此类形式。 如下是错误的写法,不得分。 if (x = 0.0) if (x != 0.0) 请写出char *p与“零值”比较的if 语句。(3分) 标准答案: if (p = NULL) if (p != NULL) 如下写法均属不良风格,不得分。 if (p = 0) if (p != 0) if (P) if (!) 、以下为 Windows NT下的32位C+程序,请计算sizeof的值(10分) char str= “ Hello ” ; char*p = str ; int

3、n = 10; 请计算 sizeof (str ) =6(2 分) sizeof ( p ) =4(2分) sizeof ( n ) =4(2分) void Func ( char str101) 请计算 sizeof( str ) =4(2 分) void *p = malloc( 101 ); 请计算 sizeof ( p ) =4(2 分) 、简答题(25 分) 干什么用?( 5 分)1、头文件中的 干什么用?( 5 分) 2、i nclude <filename.h> 和 i nclude “filename.h ” 有什 么区分?( 5 分) 答:对于 i nclude

4、<filename.h> ,编译器从标准库路径起先搜寻 file name.h 对于 i nclude“filename.h ” ,编译器从用户的工作路径起先 搜寻 filename.h 3、const 有什么用途?(请至少说明两种)( 5 分) 答:( 1)可以定义 const 常量 (2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被 cons t 修饰的东西都受到强制爱护,可以预防意外的变动,能提高程序的健壮性。 4、在C+程序中调用被C编译器编译后的函数,为什么要加extern “C”? ( 5 分) 答:C+语言支持函数重载,C语言不支持函数重载。函数被 C

5、+编译后在库 中的名字与C语言的不同。假设某个函数的原型为:void foo(int x, int y); 该函数被C编译器编译后在库中的名字为_foo,而C+S译器则会产生像 _foo_int_int 之类的名字。 C+H供应了 C连接交换指定符号extern “C”来解决名字匹配问题 5、请简述以下两个 for 循环的优缺点( 5 分) for (i=0; ii+) if (con diti on) if (con diti on) for (i=0; ii+) DoSometh in g(); DoSometh in g(); else DoOtherthi ng(); else for

6、 (i=0; ii+) DoOtherthi ng(); 优点:程序简洁 优点:循环的效率咼 缺点:多执行了 N-1次逻辑推断, 缺点:程序不简洁 并且打断了循环“流水线”作业, 使得编译器不能对循环进行优化 处理,降低了效率 c语言常见笔试题 关键词:笔试 题 int Strcmp(char *str1, char *str2) int i=0; int b=0; while(str1i|str2i) if(str1i>str2i) b=1;break; else if(str1i<str2i) b=-1;break; i+; return b; * * 1.说出下面这个程序的运

7、行结果,并简要叙述其理由: char buf110=hello; char buf210=hello; if (buf1=buf2) printf(equal!); else printf(not equal!); 因为 buf1,buf2 安排了不同的内存块, 而比较的是数组名, 事实上是两个分别指 向数组起始元素地址的指针。 2. 指出下面这段程序中存在一些什么问题: int loop,a5; int* p=a; for (loop=0;loop<5;loop+) p+; *p=loop; 数组 a5 在创建时没有初始化, 在 for 循环里也没有起到完全初始化数组的作 用,而且对一

8、块未知内存赋值。在最终一轮循环 结束时 p 指向了数组 a5 的最终一个元素的下一个地址。 string 系列 char * strcpy( char *strDest, const char *strSrc ) assert( (strDest != NULL) (strSrc != NULL) ); char *address = strDest; while( (*strDest+ = * strSrc+) != 0' ); return address; char* strncpy(char* strdest, const char* strsrc, int n) asser

9、t(strdest != NULL) (strsrc != NULL); char* address = strdest; while(n- > 0) *strdest+ = *strsrc+; return address; int strcmp(const char* str1, const char* str2) assert(str1 != NULL) (str2 != NULL); int ret = 0; while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) (*str2) str1+; str2+; if

10、 (ret > 0) ret = 1; else if (ret < 0) ret = -1; return ret; int strlen(const char* str) assert(str != NULL); int len = 0; while ('0' != *str+) len+; return len; 类 string 的构造函数 string:string(const char* str) if(str = NULL) m_data = new char1; *m_data = '0' else int length =

11、strlen(str); m_data = new charstr + 1; strcpy(m_data, str); string 的析构函数 string:string() delete m_data; string 的拷贝构造函数 string :string(const string other) int len = strlen(other.m_data); m_data = new charlen + 1; strcpy(m_data, other.m_data); string 的赋值函数 string string:operator=(const string other) i

12、f (this = other) return *this; delete m_data; int len = strlen(other.m_data); m_data = new charlen + 1; strcpy(m_data, other.m_data); return *this; 不用任何局部和全局变量实现 int strlen(char *a) int strlen(char *a) if('0' = *a) return 0; else return 1 + strlen(a + 1); sizeof 相关系列问题 const 相关系列问题 大量林锐书的习

13、题,以及各种变种 这三个几乎是每次必出现 下面的这些是程序相关题 , 许多都是以前有探讨过的 , 还请各位大侠能整理个比 较适合做面试时答案的解答 , 多谢了.最好能给出 探讨链接 , 让我等后辈有 学习的机会 . 求出相像度的算法 . 写出二分查找的代码 . int binary_search(int* arr, int key, int n) int low = 0; int high = n - 1; int mid; while (low <= high) mid = (high + low) / 2; if (arrmid > k) high = mid - 1; els

14、e if (arrmid < k) low = mid + 1; else return mid; return -1; 写出在母串中查找子串出现次数的代码 *4) 写出快速排序或者某种排序算法代码 出现次数相当频繁 5) 写出查找从一个集合中输出全部子集合的算法 . *6) 实现 strcpy 函数 char* strcpy(char* dest, const char* src) assert(dest != NULL) (src != NULL); char* address = dest; while ('0' != (*dest+ = *src+); ret

15、urn address; 出现次数相当频繁 *7) 实现 strcmp 函数 int mystrcmp(const char* str1, const char* str2) assert(str1 != NULL) (str2 != NULL); int ret = 0; while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) *str2) str1+; str2+; if (ret > 0) ret = 1; else if (ret < 0) ret = -1; return ret; 出现次数相当频繁 8)

16、 将一个单链表逆序 struct test int number; double score; test* next; void reverse(test* head) test* pe = head; test* ps = head->next; while(ps != NULL) pe->next = ps->next; ps->next = head; head = ps; ps = pe->next; 9) 循环链表的节点对换和删除。 *10) 将一个数字字符串转换为数字 .1234 ->1234 i nclude<iostream> u

17、sing namespace std; int f(char* s) int k = 0; while (*s) k = 10 * k + (*s+)- '0' return k; int main() int digit = f(4567); cout<<digit<<endl; cin.get(); 出现次数相当频繁 11)实现随意长度的整数相加或者相乘功能。 *12) 写函数完成内存的拷贝 一个内存拷贝函数的实现体 void *memcpy(void *pvTo,const void *pvFrom,size_t size) assert(pv

18、To!=NULL)(pvFrom!=NULL); byte *pbTo=(byte*)pvTo; / 防止地址被变更 byte *pbFrom=(byte*)pvFrom; while (size- >0) *pbTo+ = *pbForm+; return pvTo; 出现次数相当频繁 . 笔试 : 1)写一个内存拷贝函数 , 不用任何库函数 . 就是前些时候本版探讨的那个问题 . void* memcpy(void* pvTo, const void* pvFrom, size_t size) assert(pvTo != NULL) (pvFrom != NULL); byte*

19、pbTo = pvTo; byte* pbFrom = pbFrom; while (size- > 0) *pbTo+ = *pbFrom+; return pvTo; 2)将一个单链表逆序 .( 这个问题是个常规的数据结构问题 . 不过不当心时会损失 效率) 3)客房预定的问题 .依据客户报的人数 , 客房等级来从预备的客房中选择出全部 符合要求的客房号. 客户没有要求等级时 ,只考虑人数因素就可以了 .要考虑有些客房已经预 定的状况 . ( 写代码是要考虑好彼此的效率 ) 4)对于一个无序序列进行二分查找 线排序再查找 5)将一个数字字符串转换为数字 .1234 ->1234

20、 int convert(char* str) int k = 0; while (*str != '0') k = k * 10 + *s+ - '0' return k; 6)在文件(调用库函数创建的 ,不用考虑数据库的方式 )中读入信息 (包括职工号 , 职工产量 ) . 依据输入的信息 ( 包括职工号 , 职工产量 ). 检测是否有相同的职工号记录 , 如有 , 则增加其 产量. 如没有,则创建新的记录 . 最终的记录排序的依据是职工产量 (降序), 假如 产量相同 , 则 按职工号 (升序). ( 详细的题目记不太清了 ,这个题目有点长 .哪位

21、也去笔试了 . 请修正一下 子) 2. 面试 1)找出两个中文句子的相像度 .( 例如中国江苏南京 江苏省中国南京市 . 实 际上是指的同一个地方?面试官的要求是一分钟给出求相像度的算法?)(幸好听老师讲过中 文分词,要不 然当场就挂了) 2)写出二分查找的代码. 3)将上述代码通用化.(在C的规范内.就是我前面所的那个问题) 4)写出在母串中查找子串出现次数的代码.(不顾及效率时好说.当时一不留神把 KMP 说了 出来,结果又让我描述整个过程.汗.只好从头又学了 .不过没有冷场,边学边 说.hoho) 5)如何看待在函数中定义许多静态变量. 6)写出 quick_sort 7)写出查找从一个

22、集合中输出全部子集合的算法. 8)有关于各种类型指针.各种数据类型的sizeof运算结果(在C中) 四、有关内存的思索题(每小题 5分,共20 分) void GetMemory(char *p) char *GetMemory(void) p = (char *)malloc(101); char p = hello world; return p; void Test(void) char *str = NULL; void Test(void) GetMemory(str); strcpy(str, hello world); prin tf(str); 请问运行Test函数会有什么样的

23、结 果? 答:试题传入 GetMemory( char *p ) 函数的形参为字符串指针,在函数内 部修改形参并不能真正的变更传入形 参的值,执行完 char *str = NULL; GetMemory( str ); 后的str仍旧为NULL char *str = NULL; str = GetMemory(); prin tf(str); 请问运行Test函数会有什么样的结果? 答:可能是乱 码。char p = hello world; return p; 的p数组为函数内的局部自动变量,在 函数返回后,内存已经被释放。这是很多 程序员常犯的错误,其根源在于不理解变 量的生存期。 v

24、oid GetMemory2(char *p, int num) *p = (char *)malloc( nu m); void Test(void) char *str = (char *) malloc(101); void Test(void)strcpy(str, “hello ” void Test(void) free(str); if(str != NULL) char *str = NULL; GetMemory(str, 101); strcpy(str,“world ” ); strcpy(str, hello); prin tf(str); prin tf(str);

25、请问运行Test函数会有什么样的结 果? 请问运行Test函数会有什么样的结果? 答: 能够输出hello Test函数中也未对 malloc的 内存进行释放。 GetMemory避开了试题1的问题, 传入GetMemory的参数为字符串指针 的指针,但是在 GetMemory中执行申 请内存及赋值语句 *p = (char *) malloc( num ); 答:执行 char *str = (char *) malloc(101); 后未进行内存是否申请胜利的推断;另 外,在free(str) 后未置str为空,导致 可能变成一个“野”指针,应加上: str = NULL; 后未推断内存是否申请胜利,应加上: if ( *p = NULL ) 进行申请内存失败处理 五、编写strcpy函数(10分) 已知strcpy函数的原型是 第21页 共21页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页第 21 页 共 21 页

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

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com