以面试官的角度看strcpy函数
一:笔试或者面试的总结 之 一
(1)在笔试或者面试中常常会被问道,strcpy memmove memcpy 函数的实现。有时也会问你STL 中string的 split 和 trim的实现。有的把函数声明部分给你。让你实现它;有的直接给你一个函数名称。自己看着写去吧。
二:以下以面试官的角度一一解读
(2)微软自带的strcpy函数: (不完好,4分)
char * strcpy(char * dest,const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
return tmp;
}
(3)最完好的strcpy函数: (推荐使用,10分)
char * strcpy( char *dest, const char *src ) //将源字符串加const。表明其为输入參数不能改动
{
if(dest == src) //考虑到源字符串和目的字符串有重叠。也即地址同样
{
return dest;
}
assert( (dest != NULL) && (src != NULL) ); //对源地址和目的地址加非空地址断言
char *tmp = dest; //备份目的字符串的首地址,因为后面的操作会改动dest值
while( (*dest++ = * src++) != '\0' );
return tmp; //为了实现链式操作,将目的地址返回。获得函数返回值;
}
推荐的原因:(看得分点)
//得2分
void strcpy( char *dest, char *src )
{
while( (*dest++ = * src++) != '\0' );
} //得4分
void strcpy( char *dest, const char *src )
{
//将源字符串加const,表明其为输入參数。加2分
while( (*dest++ = * src++) != '\0' );
} //得7分
void strcpy(char *dest, const char *src)
{
//对源地址和目的地址加非0断言,加3分
assert( (dest != NULL) && (src != NULL) );
while( (*dest++ = * src++) != '\0' );
} //得9分
//为了实现链式操作,将目的地址返回,加2分! char * strcpy( char *dest, const char *src )
{
assert( (dest != NULL) && (src != NULL) );
char *tmp = dest;
while( (*dest++ = * src++) != '\0' );
return tmp;
} //得10分,基本上全部的情况,都考虑到了
//假设有考虑到源目所指区域有重叠的情况,加1分。
char * strcpy( char *dest, const char *src )
{
if(dest == src) { return dest; }
assert( (dest != NULL) && (src != NULL) );
char *tmp = dest;
while( (*dest++ = * src++) != '\0' );
return tmp;
}
(4)assert的使用
(听师兄们说)assert 在前几年的笔试和面试中,还是会被常常问道的。但是近期几年不显示的问了。总是暗含在某一到题目其中。比如上面的题型。搜狗面过,百度面过……
assert"断言"的理解及使用:
a. 断言,也即做出一些如果。如果该表达式是正确的,若程序执行正确,该断言程序成立;若断言的表达式不成立,程序执行一定会出错,整个程序就会退出。多用于
Debug调试。且能高速定位错误位置。assert(表达式);假设表达式的值为假,整个程序将退出,并输出一条错误信息。假设表达式的值为真则继续运行后面的语句。
b. assert是宏,而不是函数,使用这个宏须要加入头文件 #include <assert.h> 或 c++中加入#include<cassert>
c. assert 与 if的差别:
if : 条件成立继续运行、条件不成立也继续运行。
assert:条件成立继续运行、 条件不成立停止运行 。
d 请看图片:
以面试官的角度看strcpy函数的更多相关文章
- 从面试官的角度,聊聊java面试流程
在这篇回答里,就讲以我常规的面试流程为例,说下java方面大致会问什么问题,以及如何确认候选人达到招聘要求. 先说面试前准备,可能有些面试官是拿到简历直接问,而且是在候选人自我介绍时再草草浏览简历,但 ...
- 面试官:你看过Redis数据结构底层实现吗?
面试中,redis也是很受面试官亲睐的一部分.我向在这里讲的是redis的底层数据结构,而不是你理解的五大数据结构.你有没有想过redis底层是怎样的数据结构呢,他们和我们java中的HashMap. ...
- 一口气说出 OAuth2.0 的四种鉴权方式,面试官会高看一眼
本文收录在个人博客:www.chengxy-nds.top,技术资源共享,一起进步 上周我的自研开源项目开始破土动工了,<开源项目迈出第一步,10 选 1?页面模板成了第一个绊脚石 > , ...
- 8年经验面试官详解 Java 面试秘诀
作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三 ...
- 面试官你好,我已经掌握了MySQL主从配置和读写分离,你看我还有机会吗?
我是风筝,公众号「古时的风筝」,一个简单的程序员鼓励师. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 面试官:我看你简历上写的你们公司数据库是 ...
- 跟面试官讲Binder(零)
面试的时候,面试官问你说,简单说一下Android的Binder机制,你会怎么回答? 我想,我会这么说. 在Android启动的时候,Zygote进程孵化出第一个子进程叫SystemServer,而在 ...
- Java面试官经验谈:如何甄别候选人真实的能力,候选人如何展示值钱技能
我做Java方面的面试官也有些年头了,从校招学生到初级开发到架构师我都面试过.从技术上来讲,候选人通过面试的标准可能千差万别,但归结成一句话,就是候选人达到了职位介绍的要求,且相关项目经验达到足量的年 ...
- 阿里二面,面试官居然把 TCP 三次握手问的这么细致
TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...
- 书评<<剑指offer 名企面试官精讲典型编程题>>
前前后后阅读了一周, 感慨很多, 面试考察的是一个人的综合能力, 这一点从面试官的角度去解读, 确实对面试的理解更立体. *) 具体考察的点1) 扎实的基础2) 高质量的代码3) 清晰的思路4) ...
随机推荐
- Leetcode13--->罗马数字转换为整数
该算法是将罗马数字转换为整数,思路如下:比如IXX,使用临时变量temp保存上一个已经遍历的罗马数字,比如:遍历时是从后往前遍历的:1> 刚开始时,temp = 0; 遍历当前遍历到第一个X,则 ...
- Nginx从入门到放弃-第3章 场景实战篇
3-1场景实践篇内容介绍: 3-2 Nginx作为静态资源Web服务_静态资源类型: 3-3 Nginx作为静态资源web服务_CDN(内容分发网络)场景: 3-4 Nginx作为静态资源Web服务_ ...
- C# TypeDescriptor获取类型转换器,实现泛型转换
需求背景 平时的coding过程中,经常性遇到string类型转换成其他的基本类型,如 int double bool等,那我们正常的方式就是下面的方式进行类型转换 int.Parse("1 ...
- 【Luogu】P3396哈希冲突(根号算法)
题目链接 根号算法真的是博大精深啊……明明是暴力但复杂度就是能过 这也太强了吧!!! 预处理出p<=sqrt(n)的所有情况,耗时n根n 查询: 如果p<=根n,O1查表 如果p>= ...
- 【Luogu】P2473奖励关(期望DP)
题目链接 逆推期望DP.设f[i][j]为1~i-1中吃到的宝物集合为j,在i~k轮能得到的最大期望分数. 如果不吃显然f[i][j]+=f[i+1][j]/n 如果吃就是f[i][j]+=max(f ...
- Dinic 算法钩沉
最初是从<挑战程序设计竞赛>上了解到 Dinic 算法的.其中对于 Dinic 算法中的关键词--分层图(layered network,也称『层次图』)的引入的解释如下: 因为最短增广路 ...
- HDU——1286找新朋友(欧拉函数+质数打表)
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- java捕获不到存储过程里面手抛的错误
采用spring的JDBCTemplate来操作增删查改,Basedao执行存储过程的方法如下: 此方法要么返回一个true,要么抛出异常: 现象: 当项目发布于tomcat中时,同样的代码,同样的过 ...
- Linux目录结构简析
Linux目录结构简析 Linux继承了unix操作系统结构清晰的特点.在linux下的文件结构非常有条理.但是,上述的优点只有在对linux相当熟悉时,才能体会到.现在,虫虫就把linux下的目录结 ...
- COGS728. [网络流24题] 最小路径覆盖问题
算法实现题8-3 最小路径覆盖问题(习题8-13) ´问题描述: 给定有向图G=(V,E).设P是G的一个简单路(顶点不相交)的集合.如果V中每个顶点恰好在P的一条路上,则称P是G的一个路径覆盖.P中 ...