面试题总结之C/C++/MISC
C
C pointer,指向数据结构与指向char的指针有区别吗
它们正做+1运算时产生的位移不同
分配在堆的内存与分配在堆栈的内存有什么不同
分配在堆的内存要手动去释放
C structure,数据结构里有inter,char,float时,数据的内存布局会是怎样
数据会以4位或是8位,16位等等方式对齐
为什么会有这种对齐
这是因为机器寻址就是按照这种方式进行的,这样可以一次而不是多次读取一定数据
strcpy,使用strcpy需注意什么,为什么,有什么更安全的函数
注意源字符串是是以‘\0'结束的,strcpy就是拷到源字符串中‘\0'才结束,可能使用strncpy来替换。
函数指针,什么是函数指针,有什么用处
函数指针是指向函数的指针,最大的用处是做回调函数,可以做接口函数,就像系统中断中的中断处理函数
设计一个函数,函数中有一段功能是对相关数据的结理,但具体的处理方式是不定的。
将不定的处理方式设定成一个外部传来函数指针。(可以设计成这样 func(int a,int b,某种函数指针) )
关键字static的作用是什么?
在C语言中,关键字static有三个明显的作用:
1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。
解释堆和栈的区别。
线程与进程的区别
#include “filename.h”和#include <filename.h>的区别
#include “filename.h”是指编译器将从当前工作目录上开始查找此文件
#include <filename.h>是指编译器将从标准库目录中开始查找此文件
size_t_百度百科
http://baike.baidu.com/link?url=sh8RRfasW1QG-PhcWPZhfcZ75Uw-KYLKh443jzpNg36hVk1Fu7WeTh4lEPLCuBx_iT0wglX5MRQUqXJMWV-oUK
C++
异常,异常的功能
保证异常的健壮性,结构化处理出错信息
C++模板
简化对类似函数的设计,比如要设计两个函数 abs(int a), abs(float a),就可以用模板去设计一个函数就可以了
C++虚拟机制
用来实现多态
要在C++ 防止对象被复制,有什么方法
将复制构造函数变成私有函数
抽象类能被实例化吗
不能,只能继承抽象类,实现抽象类的函数
函数对象功能
可以用作类似C里的回调函数,也可以用作函数功能的组合
Virtual:虚函数:派生类可以覆盖掉的函数,纯虚函数:只是个空函数,没有函数实现体。
编写类String的构造函数、析构函数、拷贝构造函数和赋值函数。
动态/静态链接库区别
- 动态链接库:在运行时加载
- 静态链接库:在编译时直接联到可执行文件中
- 动态链接库和静态链接库的区别
- http://blog.csdn.net/gamecreating/article/details/5504152
- http://blog.sina.com.cn/s/blog_61ba4898010153zu.html
STL MAP内部实现的数据结构
- vector封装数组,list封装了链表,map和 set封装了二叉树
- C++ STL中的:map,multimap,multiset都应用了红黑树
指针和引用的初始化区别
RAII
- RAII_百度百科
- http://baike.baidu.com/link?url=cZ_EqWVrbxk9AIOFJ-9IrYDMRVaeEtubQlI-JKvquwrTkm9clZshXDLN9WM1Kth0W98ADgTckgMMEAwmQ3gZDq
- 对象所有资源 (RAII)
- https://msdn.microsoft.com/zh-cn/library/hh438480.aspx
RTII
- RTTI事指运行时类型识别(Run-time type identification)在只有一个指向基类的指针或引用时确定一个对象的准确类型。
什么是拷贝构造函数?
- 它是单个参数的构造函数,其参数是与它同属一类的对象的(常)引用;类定义中,如果未提供自己的拷贝构造函数,C++提供一个默认拷贝构造函数,该默认拷贝构造函数完成一个成员到一个成员的拷贝
什么是深浅拷贝?
- 浅拷贝是创建了一个对象用一个现成的对象初始化它的时候只是复制了成员(简单赋值)而没有拷贝分配给成员的资源(如给其指针变量成员分配了动态内存); 深拷贝是当一个对象创建时,如果分配了资源,就需要定义自己的拷贝构造函数,使之不但拷贝成员也拷贝分配给它的资源
智能指针
- 智能指针_百度百科
- http://baike.baidu.com/link?url=-4Fxt6pJdzfT54y9W-fRgMxlSYiedMOkLOxNlQf67rz_wHTOhIvtESgw6s8sEdgGMy2PxyNj0VUNe_IpaSBnbK
- 智能指针(现代 C++)
- https://msdn.microsoft.com/zh-cn/library/hh279674.aspx
- Smart pointer - Wikipedia, the free encyclopedia
- https://en.wikipedia.org/wiki/Smart_pointer
- 智能指针:从std::auto_ptr到std::unique_ptr - hanhuili的专栏 - 博客频道 - CSDN.NET
- http://blog.csdn.net/hanhuili/article/details/8299912
delete数组指针,只delete第一个后果
野指针
volatile
- volatile_百度百科
- http://baike.baidu.com/link?url=gPm-SmXKapujjcPjO3COGYDPSvH4VPOMabuV61XG7kM1kMhwX1AnNxF5_VZDiq7fizEaEfpYKLRBVgRt99BxOK
- volatile (C++)
- https://msdn.microsoft.com/zh-cn/library/12a04hfd.aspx
MISC(trouble-shooting, 调试, 设计模式,算法和数据结构,数学 ...)
用C语言,将一个数字乘以7倍的效率最快的方法是什么?
链表, 如何最快地找出一个单向链表的中间结点?
怎样用最快的方法判断链表是否有环?
mutex
semophore
TCP/IP
C++如何实现JAVA接口
java接口_百度百科
http://baike.baidu.com/link?url=hoPdmBnxPUNPpyCRPD80NQVbOPS0qT5IoI1jezWUDT4Dz0MdgaVrPEurjtacqy6rJRZxO0CrQCNqDn5czUriNK
程序crash如何定位检测
内存泄露定位/监测
GDB
gdb_百度百科
http://baike.baidu.com/link?url=qzDVNAB5igtON9p7hw4Ybwu5hELcvElenqb9X-hINKukyB-6lG0Al-VJ2Vxjm7PwFBJmiZVwZCYJ2V-alB_WLa
设计模式
设计模式(即使代码编制真正工程化)_百度百科
http://baike.baidu.com/link?url=QoxZgqaX0LcWjUC9bYsOC8jLwWf3HpljeCuDoqxL4MYIWnWqzdtWlIhyVhe6npPk8zL-pcoQP5oq4HImZKspt9Da3R7d3cEkrsVgwqVmAKu
单体如何避免多个instance?
构造时指向一块内存保证惟一性。static
估算2^24
2^10 = 1024 ~ 10^3
2^24 ~ 2^4 * 10^3 * 10^3 ~ 16 * 10^6
面试题总结之C/C++/MISC的更多相关文章
- JAVA面试题
在这里我将收录我面试过程中遇到的一些好玩的面试题目 第一个面试题:ABC问题,有三个线程,工作的内容分别是打印出"A""B""C",需要做的 ...
- 一道Integer面试题引发的对Integer的探究
面试题: //在jdk1.5的环境下,有如下4条语句: Integer i01 = 59; int i02 = 59; Integer i03 =Integer.valueOf(59); Intege ...
- 收集了50道基础的java面试题
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...
- 关于Java类加载双亲委派机制的思考(附一道面试题)
预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面 ...
- 转:Java面试题集(1-50)
Java程序员面试题集(1-50) http://blog.csdn.net/jackfrued/article/details/17403101 一.Java基础部分 1.面向对象的特征有哪些方面? ...
- java android面试题分析总结
本文参考多处,一并感谢! http://www.blogjava.net/fanyingjie/archive/2007/06/27/126467.aspx http://baike.baidu.co ...
- JVM内存模型和面试题解析
一.JVM运行时区域 其中, 线程私有的:程序计数器,虚拟机栈,本地方法栈 线程共享的:堆,方法区,直接内存 1 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示 ...
- Linux rhcsa认证考试试题模拟
声明: 此套试题是2017年rhcsa考试题库,本题库需配合相对应的机器操作,实验环境在我的网盘下载 考试环境: server.group8.example.com 172.24.8.254/24 s ...
- 整理+学习《骆昊-Java面试题全集(上)》
★可以关注微信公众号,了解更多技术和行业信息 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不 ...
随机推荐
- WCF 服务调用RFC 出现异常
我在VS2010的WCF项目用connecter 3.0 调用 RFC 运行到 IDestinationConfiguration ID = new SAPConfig(); ...
- 使用 document.onreadystatechange()来判断页面加载完
document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. function subSomething() { if(docum ...
- system CPU占用率过高与91助手的关系
今天正在认真工作,忽然发现电脑越来越慢. 按 CTRL+ALT+DEL打开任务管理器看了下CPU使用率.其中system占用率居然达到了64%.不对劲儿,按照平时习惯,system根本占用了不要这么多 ...
- 扩展类加载器-------改变JAVA的父优先类加载顺序
java的类加载机制默认情况下是采用委托模型:当加载某个类时JVM会首先尝试用当前类加载器的父类加载器加载该类,若父类加载器加载不到再由当前类加载器来加载,因此这种模型又叫做“父优先”模型. 但是在实 ...
- 用js将毫秒时间转成正常时间
1. 将毫秒时间转成正常时间 //#region 将毫秒转换成正常的日期 function getDate(time) { var date = new Date(parseInt(time)); v ...
- 傲游浏览器4,傲游浏览器5如何一键批量打开url链接。
傲游浏览器批量打开网址的插件没用了.有很多网友发了方法也无法实现.实际上,是可以实现傲游浏览器4,傲游浏览器5一键批量打开url链接的.我来告诉大家如何来实现.最新的M5都能使用.在收藏夹添加一个收藏 ...
- CentOS上安装MySQL
1.准备RPM安装包 MySQL-server-5.6.33-1.linux_glibc2.5.x86_64 MySQL-client-5.6.33-1.linux_glibc2.5.x86_64 2 ...
- microsoft的罗马帝国——浪潮之巅
其实开始读微软的这篇已经比较久了,从来学校的前一天晚上等车的时候就开始读了,直到今天才看完.嗯,微软的确是个帝国. 那就从头开始讲把,关于帝国的传奇都是比较长的故事呢.至于我的叙述水平和我的知识水平都 ...
- 50道经典的JAVA编程题(目录)
这份题从2013做到2014啊...哈哈,整理个目录吧.为了好查阅,也为了监督自己好好的去做完这50道题.当然,有些题实在做得没意思就跳过了,或者自己改题了.题目来源于:http://blog.sin ...
- Linux 命令、Shell 杂货铺
我看过一篇博客,是有关随手记录一些常用的命令的.感觉对自己比较有价值,不过其他人读起来就比较费劲了,毕竟没有什么主线.各取所需吧各位~ 1.CentOS 查看和修改系统时间和时区 date #查看系统 ...