赞
踩
真的好多都中了。。。。就先不整理自己遇到的了,依旧因为之前是在OneNote里面写的,所以排版很乱很乱
C/C++/C#基础:
32位情况下:
Char | 1个字节 |
short | 2个字节 |
long | 4个字节 |
Int, float | 4个字节 |
Double | 8个字节 |
long long | 8个字节 |
"struct与union的区别,他们的内存占用分别多少?
例如:
struct SA{
int a;
double b;
char c;
};
union UA{
int a;
double b;
char c;
};"
class A
{
};
问,32位系统下:
sizeof(SA) = ?
sizeof(UA) = ?
sizeof(A) = ?
申请内存(new和malloc的区别)
malloc/free是库函数,需要头文件支持。
malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。
而malloc不允许重载。
malloc函数从堆上动态分配内存。
inline的理解
解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题
1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。
2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
const关键字用法,初始化
面向对象三大特性
封装、继承、多态
同一个方法对不同的对象调用行为不同的现象
怎么实现多态
多态分为四种:重载多态、强制多态、包含多态和参数多态。
重载多态分为两种:函数重载和运算符重载。
可以说,函数重载只是多态这个概念中非常小的一部分。
虚函数
虚表(及其具体实现)
虚表指针是什么
没有继承父类的子类(因为没有父类,也可以把自己看成父类)实例化以后,通过引用或指针调用虚函数的时候,才会使用虚表指针间接访问虚函数。访问其他函数,都是静态绑定,在编译期间就已经确定下来了!
类的内存分布
STL中的map是什么(和python的字典一样)
对于迭代器来说,可以修改实值,而不能修改key。
STL中的set是什么
Vector和List的区别和优缺点,什么时候用Vector,什么时候用List
拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。
就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。
但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。
类的大小
C++三种继承
公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。
私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。
保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
虚继承 https://www.jianshu.com/p/ab96f88e5285
默认构造函数
继承得越多,类占用的空间会越大吗?
右值引用为什么会提高效率?
C++编写多线程/进程
构造函数能否定义为虚函数
GC的工作原理
Garbage Collection
在.NET框架包含一个托管堆,所有的.NET语言在分配引用类型对象都要使用它,像值类型这样的轻量级别对象始终分配在栈中,但是所有的类实例和数组都被生成在一个内存池中,这个内存池就是托管堆
垃圾收集器的托管的基本算法很简单:
1、将所有的托管内存标记为垃圾
2、寻找正在使用的内存快,并将他们标记为有效
3、释放所有没有被使用的内存块
4、整理堆以减少碎片
委托
计算机网络
Tcp udp的区别
优点:可靠,稳定。
TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
缺点:慢,效率低,占用系统资源高,易被攻击。
TCP 在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的 CPU、内存等硬件资源。
而且,因为 TCP 有确认机制、三次握手机制,这些也导致 TCP 容易被人利用,实现 DOS、DDOS、CC 等攻击。
优点:快,比 TCP 稍安全。
UDP 没有 TCP 的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状态的传输协议,所以它在传递数据时非常快。没有 TCP 的这些机制,UDP 较 TCP 被攻击者利用的漏洞就要少一些。
缺点:不可靠,不稳定。
因为 UDP 没有 TCP 那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
基于上面的优缺点,那么,TCP 和 UDP 的应用场景都有哪些呢?
TCP:当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,
UDP:当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用 UDP。
TCP 与 UDP 区别总结:
游戏里面怎么判断用哪个
实时战斗游戏的话还是要用UDP了,因为TCP的特性,一旦丢包就会重发,阻塞住后续的数据包,因而可能会产生一个较大的瞬时延迟。
可以容忍延迟并且有很好的屏蔽延迟的设计,如纸牌类和MMO,用TCP
不能容忍延迟,如DOTA类和动作类,用UDP
三次握手
因为三次握手才能保证双方具有接收和发送的能力
四次挥手
我要关闭了,你关吧,我也要关闭了,你关吧(对应FIN和ACK)
算法
十亿个数里面找最大的一百个:堆排序
两个人交替拿苹果,可拿1/2/3,怎么拿到最后一个
1/5/8 三种硬币怎么凑n块:dp
数据结构
堆和栈的区别
一个由C/C 编译的程序占用的内存分为以下几个部分:
1、栈区(stack)—> 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) —> 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—> 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后由系统释放。
4、文字常量区 —> 常量字符串就是放在这里的。程序结束后由系统释放
5、程序代码区 —> 存放函数体的二进制代码。
分配方式
管理方式
数据结构
链表和数组的优缺点
深度优先和广度优先
DFS(栈),BFS(队列)
递归和非递归实现斐波那契数列
堆和栈的使用
栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
平衡二叉树是什么
平衡二叉树又称AVL树,它的插入语、删除、查找操作均可在O(log n)的时间内完成,平衡二叉树是建立在搜索二叉树基础上的平衡。
1. AVL树或者是一棵空树,或者是具有下列性质的非空二叉搜索树:
(1) 任一结点的左、右子树均为AVL树
(2) 根结点左、右子树高度差绝对值不超过1,平衡因子定义为BF = hl -hr
快排原理口述
hash_map的复杂度和实现原理
O(1)
逻辑
如何判断点在圆里面,点在矩形里面以及点在三角形里面
圆:判断点到圆心的距离,再让距离和圆的半径比较。小于即在圆的内部,等于则再圆的的边上,大于则再圆的外部。
矩阵
三角形:
内部或边上:
abs( S(A,B,C) ) = abs( S(P,B,C) ) + abs( S(A,P,C) ) + abs( S(A,B,P) ) ,则P在三角形ABC的内部或边上
abs( S(P,B,C) )、abs( S(A,P,C) ) 和abs( S(A,B,P) )全都大于0,则p在三角形ABC内部,否则在边上
外部:abs( S(A,B,C) ) < abs( S(P,B,C) ) + abs( S(A,P,C) ) + abs( S(A,B,P) )
理论上不存在:abs( S(A,B,C) ) > abs( S(P,B,C) ) + abs( S(A,P,C) ) + abs( S(A,B,P) )
矩形:(叉积)BC*BP、CD* CP、DA * DP的值同号
操作系统
问你空类给定一个结构体, 问你在32位系统下和64位系统下它的sizeof大小.
Unity的导航
Unity 3D Navigation(导航)是用于实现动态物体自动寻路的一种技术,它将游戏场景中复杂的结构关系简化为带有一定信息的网格,并在这些网格的基础上通过一系列相应的计算来实现自动寻路。
怎么在导航路上设置障碍
Nav Mesh Obstacle,
再挂一个刚体组件 Rigidbody
游戏设计模式
单例模式、优化模式(对象池)、享元模式、命令模式、观察者模式
渲染管线
应用程序阶段、几何阶段、光栅化阶段
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。