以面试官的角度看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) ...
随机推荐
- javascript常见数据集
目录 数组 对象 一.数组 创建方法 1 2 3 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([ ...
- Leetcode8--->String to Integer(实现字符串到整数的转换)
题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“ 123 ” = 123: 2. 字符串“+123” = 123: 3. 字符串“-12 ...
- TOJ1840: Jack Straws 判断两线段相交+并查集
1840: Jack Straws Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 1 ...
- 基于 K8S 构建数据中心操作系统
在 12 月 22 日 ECUG 的下午场 ,七牛云容器计算部技术总监袁晓沛为大家带来了主题为<基于 K8S 的 DCOS 之路>的精彩分享,向大家介绍了七牛容器云目前 K8S 的状况和产 ...
- 刷题总结——探险(ssoj)
题目: 国家探险队长 Jack 意外弄到了一份秦始皇的藏宝图,于是,探险队一行人便踏上寻宝之旅,去寻找传说中的宝藏. 藏宝点分布在森林的各处,每个点有一个值,表示藏宝的价值.它们之间由一些小路相连,小 ...
- 刷题总结——字符串(ssoj)
题目: 给定n个小的字符串T和一个大的字符串S,先输出T总共再S中出现了多少次 然后q个询问···每次修改S上的一个字母,然后再次输出上述答案··· n小于1000,q<200000,T的总长度 ...
- 算法复习——区间dp
感觉对区间dp也不好说些什么直接照搬讲义了2333 例题: 1.引水入城(洛谷1514) 这道题先开始看不出来到底和区间dp有什么卵关系···· 首先肯定是bfs暴力判一判可以覆盖到哪些城市····无 ...
- HDU 2594 kmp算法变形
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- Python实现删除文件夹内规定时间内的文件
需求: 在测试程序的时候,程序会大批量的上传文件到规定目录,然后文件根据日期DAY新建文件夹存放,比如28号上传的文件放到 .../28/* 内,29号上传的文件放到 .../29/*内,因为需要 ...
- 【CF500D】New Year Santa Network(树上统计)
..]of longint; z:..]of extended; n,i,m,tot,x1:longint; ans,fenmu,y1:extended; procedure add(a,b:long ...