面试系列之js笔试题一(带div匀速)



都是我遇到的面试题,可能有点出处,但整体题是一样的,为大家的面试之路添一块砖

1.去掉html元素中的<span></span>但中间的内容要保留

QUOTE:
/<\/?span>/

2.去掉&但不能去掉以amp开头的&,比如&&sdfsdf&&jsldjssjflsdj&

QUOTE:
/&(?!amp;)/g

3.去掉数组中重复的,并且记录重复的个数(这个答案很多很多种,我这个不见得最好,但感觉效率高些)

QUOTE:
        var s = [0,2,3,4,4,0,2];
        for(var i=0,o={},tmp=[],count=0,l=s.length;i<l;i++){
                if(o[s[i]]){
                        count++;
                }else{
                        o[s[i]]=1;
                        tmp.push(s[i])
                }
        }
        alert(count);
        alert(tmp)

4.

QUOTE:
        for(var i=0;i<10;i++){
                var input = document.creatElement('input');
                input.onclick = function(){alert(i)};
                document.body.appendChild(input);
        }

问当我点击第五个时显示是多少
10
这个是个老问题了,不多解释
如果想显示5
-function(j){input.onclick = function(){alert(j)}}(i);

5

QUOTE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
        <input id='a' value="a" />
        <input id='b' value="b" />
</body>
</html>
<script>
        function test(){
                this.value = 1;
                this.get = function(){
                        alert(this.value)
                }
        }
        var T = new test;
       
        document.getElementById('a').onclick = function(){
                T.get();
        }
        document.getElementById('b').onclick = T.get;
</script>

结果是
首先
document.getElementById('a').onclick = function(){
                T.get();
        }
在T.get()这个外边this是a这个input
但在get这个方法内的this还是T
所以是1

document.getElementById('b').onclick = T.get;
这时get中的this就已经是input了而不是T自己所以
是b

6.创建一个div,宽200,高200,1px黑边从左上角匀速移动到右下角,并且要固定到右下角

QUOTE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>

</body>
</html>
<script>
        -function(){
                var d = document,db = document.body,
                        div = d.createElement('div'),timer,t=0,ds = div.style;
                ds.cssText = ";position:absolute;top:0;left:0;width:200px;height:200px;border:1px solid #000;";
                db.appendChild(div);
                timer = setInterval(function(){
                        //步长我写死为5
                        if(div.offsetWidth+div.offsetLeft>=db.clientWidth&&div.offsetHeight+div.offsetTop>=db.clientHeight){
                                clearInterval(timer);
                                //不要说什么这个样会影响性能,这个影响太小了,onresize有些时候效果并不好
                                setInterval(function(){
                                        ds.left = db.clientWidth - div.offsetWidth + 'px';
                                        ds.top = db.clientHeight - div.offsetHeight + 'px';
                                },500)
                        }else{
                                ds.left = (div.offsetWidth+div.offsetLeft>=db.clientWidth?db.clientWidth - div.offsetWidth:div.offsetLeft+5) + 'px';
                                ds.top =(div.offsetHeight+div.offsetTop>=db.clientHeight? db.clientHeight - div.offsetHeight:div.offsetTop+5) + 'px';
                        }
                },10)
        }()       
</script>

[ 本帖最后由 campaign 于 2010-2-4 15:37 编辑 ]





target:google doc
顶部
campaign





UID 89396
精华 0
积分 1530
帖子 682
威望 746
阅读权限
注册 2008-7-3
状态 离线
#2
 
发表于 2010-2-4 17:26  资料  个人空间  短消息  加为好友 
6题中的onresize版本

QUOTE:
        -function(){
                var d = document,db = document.body,
                        div = d.createElement('div'),timer,t=0,ds = div.style;
                ds.cssText = ";position:absolute;top:0;left:0;width:200px;height:200px;border:1px solid #000;";
                db.appendChild(div);
                timer = setInterval(function(){
                        //步长我写死为5
                        if(div.offsetWidth+div.offsetLeft>=db.clientWidth&&div.offsetHeight+div.offsetTop>=db.clientHeight){
                                clearInterval(timer);
                                //onresize会多次触发,为了性能,使用一个timeout还避免这个问题
                                window.onresize = function(){
                                        var resizer;
                                        return function(){
                                                if(!resizer){
                                                        resizer = setTimeout(function(){
                                                                ds.left = db.clientWidth - div.offsetWidth + 'px';
                                ds.top = db.clientHeight - div.offsetHeight + 'px';
                                                                resizer = null;
                                                        },100)
                                                }
                                        }
                                }()
                        }else{
                                ds.left = (div.offsetWidth+div.offsetLeft>=db.clientWidth?db.clientWidth - div.offsetWidth:div.offsetLeft+5) + 'px';
                                ds.top =(div.offsetHeight+div.offsetTop>=db.clientHeight? db.clientHeight - div.offsetHeight:div.offsetTop+5) + 'px';
                        }
                },10)
        }()





target:google doc
顶部
infinte





UID 54501
精华 2
积分 1855
帖子 685
威望 658
阅读权限
注册 2006-7-17
来自 TJK C区25Z领域FeDRO(Undel ...
状态 离线
#3
 
发表于 2010-2-4 19:43  资料  个人空间  短消息  加为好友 
问题1实际上很麻烦,因为JS不支持递归正则(见《精通正则表达式》)。简单方法如下:
s.replace(/<span(?: [^>]+)?>(.*?)<\/span>/g,$1);





顶部
oominder





UID 94531
精华 0
积分 385
帖子 73
威望 72
阅读权限
注册 2009-9-14
状态 离线
#4
 
发表于 2010-2-4 20:39  资料  个人空间  短消息  加为好友 
支持楼主下 不错的科普系列 希望多多写. 这些题都有多解.

顶部
JS小小


喜羊羊



UID 94273
精华 0
积分 896
帖子 187
威望 223
阅读权限
注册 2008-12-30
状态 离线
#5
 
发表于 2010-2-4 20:44  资料  个人空间  短消息  加为好友  QQ
我是来围观的^_^

[ 本帖最后由 JS小小 于 2010-2-4 20:48 编辑 ]





╔──────────────╗
│ミ用心体验,脚本乐趣ミ│
╚──────────────╝
顶部
campaign





UID 89396
精华 0
积分 1530
帖子 682
威望 746
阅读权限
注册 2008-7-3
状态 离线
#6
 
发表于 2010-2-4 22:06  资料  个人空间  短消息  加为好友 
回复 #3 infinte 的帖子

我理解简单啦
这个不就行了吗
<script> alert('sdflasdfjal<span>Adfsdfsdf</span>Adfsdfsdf<span>Aedfsdf< /span>'+"除了后"+'sdflasdfjal<span>Adfsdfsdf< /span>Adfsdfsdf<span>Aedfsdf</span>'.replace(/<\/?span>/g,'')) </script>
   提示:您可以先修改部分代码再运行






target:google doc
顶部
campaign





UID 89396
精华 0
积分 1530
帖子 682
威望 746
阅读权限
注册 2008-7-3
状态 离线
#7
 
发表于 2010-2-4 22:07  资料  个人空间  短消息  加为好友 
回复 #4 oominder 的帖子

会的就像手痒痒系列一样





target:google doc
顶部
abcdreamer





UID 94366
精华 0
积分 2987
帖子 1056
威望 1037
阅读权限
注册 2009-4-18
状态 离线
#8
 
发表于 2010-2-4 23:33  资料  个人空间  短消息  加为好友 
回复 #3 infinte 的帖子

如果只是去掉span标签,很简单:
s.replace(/<span[^>]*>/gi, '').replace(/<\/span>/gi, ''); //去头去尾

顶部
campaign





UID 89396
精华 0
积分 1530
帖子 682
威望 746
阅读权限
注册 2008-7-3
状态 离线
#9
 
发表于 2010-2-5 09:31  资料  个人空间  短消息  加为好友 
罗嗦了
楼上
<script> alert("dfsdf<span sfji=dfsdf sdfs>AAAAAAA</span>sdfsdsdfsdf".replace(/<\/?span[^>]*>/g,'')) </script>
   提示:您可以先修改部分代码再运行






target:google doc
顶部
meteoric_cry





UID 87829
精华 0
积分 951
帖子 442
威望 416
阅读权限
注册 2008-6-2
来自 苏州
状态 离线
#10
 
发表于 2010-2-5 10:08  资料  个人空间  主页 短消息  加为好友  QQ
回复 #3 infinte 的帖子

$1上少了引号...

s.replace(/<span(?:[^>]+)?>(.*?)<\/span>/gi, '$1');





顶部
meteoric_cry





UID 87829
精华 0
积分 951
帖子 442
威望 416
阅读权限
注册 2008-6-2
来自 苏州
状态 离线
#11
 
发表于 2010-2-5 10:26  资料  个人空间  主页 短消息  加为好友  QQ
关于正则的一些了解  http://deerchao.net/tutorials/regex/regex.htm#negation
应该是比较不错的。





顶部
caor1987





UID 77826
精华 0
积分 185
帖子 53
威望 53
阅读权限
注册 2007-10-26
状态 离线
#12
 
发表于 2010-2-8 13:29  资料  个人空间  主页 短消息  加为好友 
4.
QUOTE:
        for(var i=0;i<10;i++){
                var input = document.creatElement('input');
                input.onclick = function(){alert(i)};
                document.body.appendChild(input);
        }

问当我点击第五个时显示是多少
10

这里为什么是10,而不是9呢?





http://www.caoren.net
顶部
killjim





UID 94518
精华 0
积分 87
帖子 36
威望 36
阅读权限
注册 2009-9-11
状态 离线
#13
 
发表于 2010-2-8 13:36  资料  个人空间  短消息  加为好友 


QUOTE:
原帖由 caor1987 于 2010-2-8 13:29 发表
4.
QUOTE:
     QUOTE:
        for(var i=0;i<10;i++){
                var input = document.creatElement('input');
                input.onclick = function(){alert(i)};
                document.body.appendChild(input);
        }

问当我点击第五个时显示是多少
10

这里为什么是10,而不是9呢?

其实 这个是报错  嘿嘿

顶部
campaign





UID 89396
精华 0
积分 1530
帖子 682
威望 746
阅读权限
注册 2008-7-3
状态 离线
#14
 
发表于 2010-2-8 13:40  资料  个人空间  短消息  加为好友 
回复 #12 caor1987 的帖子

这样的,当9时小于10for中的内容执行,然后i++也就是由9变到了10,这时i不再小于10那就结束for
这时的i是10

你可以这样
for(i=0;i<10;i++){};
alert(i)





target:google doc
顶部
caor1987





UID 77826
精华 0
积分 185
帖子 53
威望 53
阅读权限
注册 2007-10-26
状态 离线
#15
 
发表于 2010-2-8 13:55  资料  个人空间  主页 短消息  加为好友 
明白了,谢谢楼主。





http://www.caoren.net
顶部
infinte





UID 54501
精华 2
积分 1855
帖子 685
威望 658
阅读权限
注册 2006-7-17
来自 TJK C区25Z领域FeDRO(Undel ...
状态 离线
#16
 
发表于 2010-2-8 17:48  资料  个人空间  短消息  加为好友 
回复 #10 meteoric_cry 的帖子

抱歉,最近Perl研究多了





顶部
aasvvv





UID 2077
精华 0
积分 3397
帖子 2018
威望 1973
阅读权限
注册 2003-4-16
状态 离线
#17
 
发表于 2010-2-9 15:49  资料  个人空间  主页 短消息  加为好友 
写了十多年的js代码,发现我还是不适合考试,开发东西没问题,但碰到考试题目,感觉有些题目连意思都把握不准,更不用说去答题了。

posted on 2011-09-19 06:39  之乎者也2011 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/wrmfw/archive/2011/09/19/2180862.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity是一款广泛使用的游戏开发引擎。它提供了可视化的编辑器界面、底层的渲染引擎以及广泛支持的插件生态系统,使得开发者可以很方便地进行游戏开发。 如果你准备参加Unity的面试笔试,你需要掌握以下方面的知识: 1. 编程语言:Unity支持C#和JavaScript语言。你需要掌握其中一种或两种编程语言,并且能够熟练应用它们。 2. 游戏设计:你需要具备游戏设计的基本知识,包括游戏流程、关卡设计、角色设计、游戏平衡等方面的知识。 3. Unity编辑器:你需要熟练掌握Unity编辑器的各种工具,例如场景编辑、组件列表、资源管理等。 4. 物理引擎:Unity包含了物理引擎,你需要熟悉它的基本概念,例如重力、力、碰撞等。 5. 动画系统:游戏中的角色动画是非常重要的一部分,你需要熟悉Unity的动画系统,包括动画控制器、状态机等。 总之,如果你想要在Unity领域取得成功,你需要在以上方面进行深入学习和掌握。如果你能够在面试笔试中展现出你的知识和技能,相信你会很快获得工作机会。 ### 回答2: Unity是当前市面上非常流行的游戏引擎,而从事Unity开发的人才需求也越来越大。在面试和笔试中,可能会涉及到Unity的相关知识和技能。下面将从Unity的四个方面进行简单介绍:游戏物体、组件、Scene和Asset以及C#语言。 1. 游戏物体 在Unity中,物体(GameObject)是游戏场景中的核心对象。而每一个场景都是由若干个物体组成,物体又是由若干个组件(Component)组成的。因此,需要了解游戏物体的各种操作和属性设置,包括名称、激活状态、位置、旋转、缩放、父子关系等。 2. 组件 组件是Unity中最常用的一种对象,也是游戏物体的一个基本组成部分。它可以改变游戏物体的行为、外观和互动方式。在Unity中,可以通过添加或删除组件来更改游戏物体的属性和行为。例如,常用的组件包括:Animator、Rigidbody、Collider等。 3. Scene和Asset Scene(场景)是Unity的一个概念,是由多个游戏物体和它们的组件组成的。在进行游戏开发时,需要了解如何创建、导入和导出Scene。而Asset(资源)则是指Unity中的各种资源文件,例如:纹理、音频、3D模型、动画等。需要了解如何使用Asset Store、如何导入和设置Asset等。 4. C#语言 Unity使用C#语言作为主要的编程语言。因此,在进行Unity开发时,需要了解一些基本的C#语言语法和编程思想,包括:变量、方法、类、继承、多态、接口、委托等。此外,还需要了解一些Unity特有的API和对象模型,例如:GameObject、Component、Transform、Input、Physics等。 总体来说,对于Unity的面试和笔试,需要具备扎实的Unity框架和常用组件的运用能力,同时还能够掌握C#语言的基本知识。只有掌握了这些核心技能,才能在Unity开发中不断提升自己,并为团队和项目创造出更多价值。 ### 回答3: Unity 是一款非常流行的游戏开发引擎,其在市场上占有非常重要的地位,因此很多人选择学习和使用 Unity。如何通过 Unity 的面试笔试题来测试候选人的实际技能以及对 Unity 开发的理解和掌握程度呢? 对于 Unity 的面试笔试题,一般会涉及以下几个方面: 1. 编程语言和算法基础 Unity 开发主要使用 C# 语言,因此需要候选人具备扎实的 C# 基础和算法基础,包括数据结构、算法思想、设计模式等方面的知识。 2. Unity 引擎和 API 掌握程度 作为 Unity 开发者,需要掌握很多 Unity 引擎和 API 的知识,比如场景管理、游戏物体与组件、UI 界面开发、动画系统、物理引擎等。针对这些方面,笔试题目可能会让候选人通过代码实现相关功能或者回答相关问题。 3. 项目经验和实践能力 除了理论知识,实际项目经验和实践能力也非常重要。因此,笔试题目可能会涉及到一些实际场景的开发问题,比如优化性能、解决 bug、协作开发等方面。 总之,Unity 面试笔试题主要考察候选人的编程能力、Unity 引擎和 API 掌握程度以及项目实践能力。同时,需要候选人具备良好的沟通能力和团队合作精神,这对于实际开发非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值