hao wei lai面试
发布日期:2021-05-04 15:46:18 浏览次数:22 分类:精选文章

本文共 2293 字,大约阅读时间需要 7 分钟。

var a = [];a[100] = 1;console.log(a.length); // 101console.log(a[0]); // undefineda[200] = undefined;console.log(a.length); // 201console.log(a['100']); // 1

在JavaScript中,数组的索引如果超出其定义的范围,会返回undefined。然而,当访问数组的某个索引时,JavaScript并不会自动扩展数组的长度来容纳该索引。因此,即使你尝试访问a[100],而数组原本长度为0,JavaScript仍然会返回undefined。然而,当你将a[100]赋值为1时,数组的长度会自动增加到101,因为数组的长度是基于最大的索引加1来计算的。

this: 谁调用指向谁。比如: 直接调用f(){this.name = "123";}  其实这里相当于window去调用,就是全局的了。

在函数调用中,this的值取决于函数是如何被调用的。如果函数是作为函数表达式直接调用(如f()),则this会指向window对象。如果函数是作为方法被调用(如obj.f()),则this会指向obj对象。此外,callapplybind方法允许你手动指定this的值。

prototype和__proto__的理解

在JavaScript中,prototype__proto__都与对象的原型链有关。prototype是对象的原型链的终点对象,而__proto__是对象的实际原型链指针。每个对象都有一个__proto__,它指向其构造器的prototype。通过修改__proto__,可以改变对象的行为和性质。

var s = [];function foo() { for (var i = 0; i < 3; i++) { s[i] = function () { console.log(i); } }}foo(); // 空s0; // 3s1; // 3s2; // 3

由于JavaScript的闭包特性,函数内部的变量i会在每次循环中重新声明。因此,当你在循环中创建函数时,这些函数都捕获了同一个i变量。由于i在循环结束后已经变为了3,因此所有函数都会输出3。

ES6为什么要引入let关键字

在ES6中,let关键字的引入是为了解决传统的变量声明方式(如varconst)在块级作用域中无法显式指定变量类型的问题。let允许开发者在块级作用域中声明变量,并且可以在块级作用域内修改变量的值。

draw call

draw call是游戏引擎中用于管理渲染任务的机制。减少draw call的数量可以优化游戏性能,提高帧率。减少draw call的方法包括合并渲染批次、减少渲染对象数量以及优化场景加载。Cocos中可以通过合并节点和使用渲染批次来减少draw call

1024*1024,16位的贴图在内存中占多少个字节?

一个1024*1024的贴图需要1024*1024=1048576个像素。如果使用16位的颜色深度(如RGB565),则每像素占4字节。因此,内存占用为1048576*4=4,194,304字节,即约4MB。

Src Blend Factor和Dst Blend Factor

Src Blend Factor设置为SRC_ALPHA表示源图像的α通道将与目标图像的背景混合。Dst Blend Factor设置为ONE_SRC_ALPHA表示目标图像的背景将与源图像的α通道混合。这种组合方式通常用于透明图层的合成,使得源图像的内容优先于目标图像的背景。

null和undefined的区别

nullundefined都是JavaScript中的null类型,但它们有不同的用途。null表示一个变量的值为null,而undefined表示一个变量未被声明或无法访问。在条件判断中,null会被解释为false,而undefined也会被解释为false。在严格模式下,这两者是不同的。

Cocos的内存管理机制

Cocos提供了一套高效的内存管理工具,包括自动释放内存、垃圾回收和内存分析。开发者可以手动释放不再使用的对象或使用自动内存管理功能来优化内存使用。内存管理的关键在于及时释放不需要的资源,以避免内存泄漏。

凹多边形碰撞的实现方法

在2D平面中,凹多边形的碰撞检测可以通过以下方法实现:

  • 分离轴定理(SAP): 将两个多边形分解为小的简单形状(如矩形或三角形),然后检查这些形状是否重叠。
  • 快速反射法(AABB树): 使用树状结构快速定位潜在的碰撞对。
  • 旋转和平移缩放法: 将多边形旋转和缩放后使用分离轴定理。
  • PNG和JPG的对比

    • PNG: 无损压缩,支持透明度,文件格式为.png。适合需要高质量图像的场景。
    • JPG: 压缩率高,适合照片和网页图像,文件格式为.jpg。适合需要小文件大小的场景。

    Cocos AssetBundle

    Cocos的AssetBundle允许开发者批量加载多个资源文件,如图像、音效和脚本。通过AssetBundle,可以优化资源加载时间和内存使用,适合大规模项目的资源管理。

    手机发热问题的优化

    • 减少不必要的计算: 避免在布局上绘制过多或过复杂的图形。
    • 优化渲染流程: 使用合并渲染批次和减少Draw Call。
    • 优化代码: 使用高效的数据结构和算法,减少内存使用和计算开销。

    这些优化方法可以有效降低手机发热的风险,提高用户体验。

    上一篇:游戏服务器主城
    下一篇:jdbc操作数据库基础: 查询的例子

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年04月05日 19时19分39秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章