基础面试题
文章平均质量分 81
魂玉天成
从事游戏行业十几年,自己都不记得做了多少款、多少种类型游戏了,拯救过多少产品,使用过引擎:cocos、unity、虚幻4,前后端顶层架构实现,常用编程语言C++、java、C#等,对图形有深刻理解。建CSDN博客的目的是发现自己最近记忆力差了许多,以便作为记录。并帮助那些在开发路上迷茫和需要帮助的人,也欢迎技术爱好者共同探讨。
展开
-
unity: C#的Action Event Delegate的异同
它们都与函数指针相关,并提供了可调用指向方法的代码块的方式。它们都是用于编写事件驱动和回调代码的通用概念。它们都可以用于实现委托模式,使触发对象与事件处理程序之间的解耦。Action和Event都是C#中的关键词,而Delegate则是一个类。Action和Func之间的区别在于Action没有返回值,而Func具有返回值。Delegate用于指向方法,而Event用于将事件与订阅器连接起来。原创 2023-06-18 18:20:59 · 3309 阅读 · 1 评论 -
leetcode java 大厂基础面试题附答案(四)
聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚簇索引,因为一个表的物理顺序只有一种情况,所以,对应的聚簇索引只能有一个。聚簇索引的叶子节点就是数据节点,既存储索引值,又在叶子节点存储行数据。Innodb 创建表后生成的文件有:frm:创建表的语句;idb:表里面的数据+索引文件非聚集索引(MyISAM引擎的底层实现)的逻辑顺序与磁盘上行的物理存储顺序不同。非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。索引命中后,需要回表查询。原创 2023-03-06 23:06:58 · 1271 阅读 · 0 评论 -
leetcode java 大厂基础面试题附答案(三)
栈是线程私有的,它的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够的内存去完成扩展,或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈,那么Java虚拟机将抛出一个OutOfMemory异常。代理是一种常用的设计模式,目的是:为其他对象提供一个代理以控制对某个对象的访问,将两个类的关系解耦。解析是静态的,在类加载的解析阶段就可将符号引用转变成直接引用。原创 2023-03-06 23:01:21 · 280 阅读 · 0 评论 -
leetcode java 大厂基础面试题附答案(二)
•分治法,将1亿个数据分成100份,每份100万个数据,找到每份数据中最大的 10000个,最后在剩下的10010000个数据里面找出最大的10000个。100万个数据里面 查找最大的10000个数据的方法如下:用快速排序的方法,将数据分为2堆,如果大 的那堆个数N大于10000个,继续对大堆快速排序一次分成2堆,如果大的那堆个 数N大于10000个,继续对大堆快速排序一次分成2堆,如果大堆个数N小于 10000个,就在小的那堆里面快速排序一次,找第10000-n大的数字;• 方法区中的常量引用的对象。原创 2023-03-06 22:53:09 · 1376 阅读 · 0 评论 -
leetcode java 大厂基础面试题附答案(一)
• 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet。DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。原创 2023-03-06 22:46:01 · 747 阅读 · 0 评论 -
LeetCode C++基础面试题汇总附答案(四)
这里整理了leetCode C++的基础面试第四部分,希望对大家有所帮助类与类之间的关系has-A包含关系,用以描述一个类由多个部件类构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类;use-A,一个类使用另一个类,通过类之间的成员函数相互联系,定义友元或者通过传递参数的方式来实现;is-A,继承关系,关系具有传递性;原创 2023-02-22 13:48:16 · 434 阅读 · 0 评论 -
LeetCode C++基础面试题汇总附答案(三)
用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元即为内存泄露。1). 使用的时候要记得指针的长度.2). malloc的时候得确定在那里free.3). 对指针赋值的时候应该注意被赋值指针需要不需要释放.4). 动态分配内存的指针最好不要再次赋值.5). 在C++中应该优先考虑使用智能指针.原创 2023-02-22 13:38:48 · 568 阅读 · 0 评论 -
LeetCode C++基础面试题汇总附答案(二)
这里整理了leetCode C++的基础面试第二部分,希望对大家有所帮助引用就是某个目标变量的“别名”,对应用的操作与变量直接操作效果完全相同。声明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因为该引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。原创 2023-02-22 13:28:20 · 486 阅读 · 0 评论 -
LeetCode C++基础面试题汇总附答案(一)
这里整理了leetCode C++的基础面试第一部分,希望对大家有所帮助。原创 2023-02-22 13:21:50 · 1251 阅读 · 2 评论 -
基础面试题 :大端、小端及转换方式
在实际开发中,做过网络的小伙伴一定会碰到网络字节顺序(大端和小端)的问题,尤其unity游戏开发。因为对于C++和Java默认是大端开发,C#就非常另类,默认的网络的字节顺序是小端,有点另类,这里就牵扯到大小端的转换问题。一、字节序。原创 2023-02-20 21:40:42 · 2014 阅读 · 0 评论 -
基础面试题:堆和栈的区别
堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一棵完全二叉树。将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆是非线性数据结构,相当于一维数组,有两个直接后继,如图:堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。2)堆的效率堆内存是区别于栈区、全局数据区。原创 2023-02-11 20:36:24 · 4489 阅读 · 0 评论 -
基础面试题:C++中new和malloc的区别
new/delete和malloc/free 都要一一对应,调用了多少次new 就需要调用多少次delete;new/delete和malloc/free,C++可以调用。new/delete申请类对象时,并自动调用构造函数,对象生命周期完成后,自动调用析构函。malloc/free是C语言的标准库函数,new/delete 是C++的运算符。返回类型不同,new出的对象返回的是对象指针,而malloc的是void*类型。new/delete和malloc/free它们都是内存申请和释放的函数。原创 2023-02-10 08:55:19 · 704 阅读 · 0 评论 -
基础面试题:C++中如何理解const修饰符
对于任何语言设定限定符为了是程序设计者不破坏其语言设定的基础规则,使程序能够安全运行和稳定运行。本文对C++ 中const限定符做详细的解析。class A类的数据成员为常量,那么就要在构造函数中初始化列表中初始化它,不能在构造函数中初始化2、定义常量函数class A//表明该函数中不能修改成员变量//表明返回值是常量如果const修饰返回值,那么返回值是常量,如果修饰的在函数声明后面,那么说明在该函数中不能修改成员变脸的值在 C++ 中,const 也可以用来修饰对象,称为。原创 2023-02-09 12:59:06 · 1003 阅读 · 1 评论 -
基础面试题: C++中结构和类的区别
在C++中结构和类都是数据的集合,体现了封装性,结构是在C语言的延续产物,类是在面向对象语言后出现的产物,通常我们认为类(class)是结构(struct)的扩展。类和结构往往有许多相同的地方,也有许多不同的之处,只有将它们了解清楚,才能明确什么时候我们应该用结构,什么时候我们用类。C++ 中,结构可以有成员变量、方法、也可以有构造函数,同样也可以被继承,可以从接口派生。但是对于C与C++语言中同样是结构,它们也有不同之处1、C和C++中结构体的不同。原创 2023-02-08 19:24:10 · 978 阅读 · 2 评论 -
基础面试题:为什么将析构函数定义为虚析函数
在面试的时候,是否非常常被问到,在有继承关系中为什么要将析构函数定义为虚析函数,在此运用场景下,这是有特殊原因的。析构函数作为对象生命周期时最后一个所见的函数,我们在析构函数中做些清理工作或者内存释放、重置等工作。它犹如一个清洁工,自动打扫卫生,当然前提是你delete 这个对象或对象的生命周期结束。原创 2023-02-06 00:21:30 · 789 阅读 · 0 评论 -
基础面试题:C++ 如何理解虚函数表
在理解虚函数列v-table,我们要了解对象所内部地址结构,以及单一继承下和多继承下虚函数所执行过程,对此清晰理解函数所执行顺序。对于如何理虚函数表往往作为一道基础面试题会被经常提及。C++中的虚函数的实现一般是通过虚函数表,类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址。注意的是,编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。原创 2023-02-05 23:13:46 · 561 阅读 · 0 评论 -
基础面试题: 面向对象三大特性
计算机语言的发展经历了机器语言、面向过程语言、以及面向对象语言,机器语言晦涩难懂高效,代表语言是汇编语言,面向过程语言代表C语言,面向对象语言代表C++和Java。由于在计算机发展早期,硬件设备极其有限,效率往往是第一要素,汇编语言语言以及后来的C语言就作为软件开发必修内容,但是随着硬件和计算机语言发展到今天,一个以对象管理为概念语言就孕育而生。原创 2023-02-05 13:03:03 · 688 阅读 · 0 评论 -
基础面试题:引用和指针的区别
对于初学者来说,指针是非常晦涩难懂的一部分,可以毫不夸张地讲,如果对于指针能够正确理解,那么基本上对于C++或C语言的基础理解的了一大半,其他内容相对简单易懂。与指针类似的引用类型对于初学者来说也不是很友好,这里就对指针和引用类型以及它们的区别作一个阐述。特别提醒:在C或C++中,指针和引用类型的区别是什么往往作为一道面试题指针是实现了对其他对象的间接访问复合类型,它指向访问对象(基础类型:整型、浮点等,类对象)的地址。可以对访问对象直接作出访问和操作。简单的理解,指针就是一个访问地址的游标而已;原创 2023-02-02 22:49:55 · 562 阅读 · 0 评论