
面试题
文章平均质量分 51
海棠花不香
这个作者很懒,什么都没留下…
展开
-
memcpy不适用的场景
这段代码表示,在数据量较少的拷贝,比如16个字节以内,也就是4个整形数据的长度,采用一个循环赋值的方式,逐字节的将源地址的数据赋值到目的地址上,且忽略字节对齐和重叠的情况。假如,我们知道拷贝的数据是固定长的字节,比如一个整数,4个字节,那么采用memcpy也是可以的,但是显然,不需要做那么多循环操作,分4次将整数数据拷过去。这是曾经碰到一个面试题,当时没回答上来。那如果是小于16字节的拷贝,可以发现这个操作相当于是用一串宏定义去代替,宏定义是由预处理器展开,没有函数的参数压栈,减少调用开销,所以非常高效。原创 2023-03-05 20:43:53 · 734 阅读 · 0 评论 -
面试题之c++11新特性,你真的会答吗
也许你看过类似“c++11必背十大新特性”之类的文章,所以背起来毫不费劲。但一顿输出之后,发现面试官的表情如同一潭死水,没有丝毫波澜。是的,这种答案过于稀松平常,并不能为你的面试增色多少,只能保证不减分。那么怎样的回答可以让面试官有一些意外和惊喜?请看以下分析。c++11是在c++98/03之后一次比较大的改进,大大小小的新特性一百多个,我们在有限的时间只能选择性的回答一些比较常用,同时能避免同质性的一些性质。什么是同质性?就是你背了auto又背decltype,背了shared_ptr又背unique_原创 2022-01-24 20:27:57 · 1294 阅读 · 0 评论 -
大小端模式
记录本篇的缘由是在一次面试题中,面试官问起大小端的问题,没有答出来。这里做一份笔记。主要内容参考这篇博客。定义大端模式(Big-endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小端模式(Little-endian):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。面试的时候记住一个词就够了,“小高高”,即:小端模式–高字节数据–高地址位置。字节顺序高低以一个4字节的整型数值 int a = 0x12345678 为例,该数的十六进制,十进制及二进制分别为原创 2022-01-12 19:10:55 · 333 阅读 · 0 评论 -
常用设计模式这样学
常用设计模式这样学 如果你也跟笔者一样,初学模式的时候,20多种设计模式让你眼花缭乱,不知道如何下手,可以试试这里提出的方法。无论面试,或者重构代码的时候,都能知道相应设计模式的使用场景。简而言之,就是案例记忆法。通过记住每个设计模式的典型案例,达到对常用的几个设计模式了然于胸的境界。这里列举常用的5种设计模式,一般面试和简单的使用场景均能覆盖。如果希望掌握全部的设计模式,可以用这种方法总结剩下的模式。模板方法模式 – 动物园表演流程 模板模式的关键词是,流程固定。这个设计模式适合流程固定的情况。原创 2021-08-22 21:18:40 · 143 阅读 · 0 评论 -
排序算法之快排,希尔和冒泡
排序算法有很多种,平常工作其实用到的不多,但是这几种的思想和实现需要了解。而且记起来也不容易混淆。快速排序的特点是,有两个索引去递增和递减,去跟基准比较。通过将基准小的排在前面,基准大的排在后面,递归完成。int sort(int *data, int left, int right){ if(left >= right) return 0; int i = left; int j = right; int key = dat...原创 2021-08-12 21:24:20 · 280 阅读 · 0 评论 -
常见面试题之RAII
面试时碰到这么一道面试题,面试官说请谈一谈RAII。其实就是Resouce Acquisition Is Initialization,资源获取即初始化。抓住两个点。1,获取资源后立即放进管理对象。2,管理对象运用析构函数确保资源被释放。如果用自己的话说:这是c++管理资源,避免内存泄漏的一种方式。典型的应用是智能指针,创建对象的时候使用智能指针接管,离开其作用域自动释放资源。如果想回答得艺术一点,可以引用自己看过的书。Effective C++ 里面的条款13 use objects to m原创 2021-08-09 22:24:49 · 349 阅读 · 0 评论