跪在某度秋招Web前端笔试题下

今晚跑去华工参加百度Web前端的笔试,做完之后交卷,本来感觉是“为之四顾,为之踌躇满志”的。
其中一道题目是关于数组的,回来在电脑上面一敲,顿时为自己的智商和知识羞愧了。

多话不说,直接上题目吧。大概是酱紫的:

代码如下,请写出输出的结果。

 1 <script>
 2 var str = ‘john‘;
 3 var str2 = ‘angus‘;
 4
 5 var arr1 = str.split(‘‘);
 6 var arr2 = arr1.reverse();
 7 var arr = str2.split(‘‘);
 8 var arr3 = arr2.push(arr);
 9
10 console.log(arr1.length, arr1.slice(-1));
11 console.log(arr3.length, arr3.slice(-1));
12  </script> 

简单说说体现博主低智商的地方,便是将第8行的push当做了直接在arr2的后面逐个加上arr的元素。唉,不得不说,这是多么脑残,多么天真。

行了,废话不说,先说在FF下测试的答案:

第10行打印的是:5 Array [ Array[5] ];

第11行则没有打印结果。(这让我很费劲。。。稍后再说。。)

你,猜到了吗?

博主没有猜到两点:

1、第10行显示arr1的length是“5”;(BUT,如果我没有犯上面说过的理解错push()的脑残错误,这道题我也不会猜对结果);

2、第11行居然没有任何输出,博主试了N++次都不敢相信。

最后,努力百度(唉,还是逃不出度娘的手掌心),终于解决了上述两个问题(作为一个刚刚入门的人,有不是问题的地方嘛)。。。

第一个问题,见http://www.cnblogs.com/0banana0/archive/2011/11/17/2252639.html

“ 结论:js数组是引用类型,它只允许通过索引来获取或改变数组的值 引用类型的东西都是不能通过(它赋值过的外部变量)所改变的  也就是(它赋值过的外部变量)这个值改变了原数组不会有任何变化。”

所以虽然我们是在arr3上应用push()方法,但最终影响的还是arr1、arr2、arr3共同指向的数组。

上述博文一楼评论说得很明白:

JS中没有指针,只有传值(value)与传址(reference引用)的区
var a = [1,2,3,4] //a不仅是数组,还是个对象,实际上a就是对[1,2,3,4]的引用
var b=a
var c=a
//以上两条赋值语句建立了b与c 对a即[1,2,3,4]的引用,无论改变a 还是b抑或c 都是对[1,2,3,4]的操作,这就是传址(堆中操作)
var d=a[1] //则是把a[1]的值"1"传递给d,对d的改变则不会影响a[1],即所谓的传值(栈中操作)

第二个问题是第11行代码无输出的问题,最后我在新浪博客上面得到了答案(http://blog.sina.com.cn/s/blog_51c99bb20101o48m.html):

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

pop() 方法用于删除并返回数组的最后一个元素。

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

So,一定一定要记住,这四个方法是有返回值的。

另外,array.splice()方法也是有返回值的,返回的含有被删除的元素的数组(如果木有元素被删除,辣么返回空数组):

 1  <script>
 2 var str = ‘john‘;
 3 var str2 = ‘angus‘;
 4 var a = str.split(‘‘);
 5 var b = str2.split(‘‘);
 6 var c = a.splice(2,1,"test");
 7
 8 console.log(a);//Array [ "j", "o", "test", "n" ]
 9 console.log(b);//Array [ "a", "n", "g", "u", "s" ]
10 console.log(c);//Array [ "h" ]
11  </script>

PS+PS:

还得提到reverse()、sort()这两个操作是会影响到原来的数组的:

1 <script>
2 var str = ‘john‘;
3 var a = str.split(‘‘);
4 var c = a.sort();
5
6 console.log(c);//Array [ "h", "j", "n", "o" ]
7 console.log(a);//Array [ "h", "j", "n", "o" ]
8  </script>

而concat()、slice()操作则对数组都不影响。。。。(说到concat()方法,想到了昨天看到的高效复制数组的方法:var newArr = arr.slice(0)和var newArr = arr.concat(),记下来备用吧。。。嗯,还有网址:http://www.jb51.net/article/5769.htm

新手的第一篇博文,我是二逼的前端“爱好者”。。。

时间: 2024-10-07 05:50:44

跪在某度秋招Web前端笔试题下的相关文章

也许你需要点实用的-Web前端笔试题

之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w3c的理解与认识. 标签闭合,标签小写,不乱嵌套:提高搜索机器人的搜索几率: 使用外联的css和js,结构行为表现的分离:文件下载与页面加载速度更快,内容能被更广泛的设备所访问: 更少的代码和组件:容易维护,改版方便,不需要变动页面内容,提供打印版本而不需要复制内容,提高网站的易用性. 2.Xhtm

便利蜂2019秋季web前端笔试题v2.6

便利蜂2019秋季(11月)web前端笔试题前端技能试题v2.6 一.单选题(总共8分,每题2分)1.以下不属于HTTP缓存控制协议头是( )A. Cache-Control    B. Content-Type   C.Etag   D.Vary考点:web缓存只http技术答案:B分析:已经系统了解了web缓存策略,总结了笔记,可以点此查看.Content-Type是响应头告诉浏览器返回的资源的MIME类型. 2.cookie特性下列说法正确的是( )A. cookie没有长度限制,可以无限

2015腾讯web前端笔试题

  1 请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性) 2 请指出一下代码的性能问题,并经行优化. var info="腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站."; info +="拍拍网于2005年9月12日上线发布,"; info +="2006年3月13日宣布正式运营,"; info +="是目前国内第二大电子商务平台."; info=info.split(&quo

web前端笔试题(转)

以下为Web前端开发笔试题集锦之Javascript篇,移步HTML/CSS篇 1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test("a1a__a1a__a1a__a1a__"); 2,截取字符串abcdefg的efg var str = "abcdefg"; if (/efg/.test(str)) { var ef

Web前端笔试题

1.网页经常用到的图片格式有几种,它们之间有什么不同点和用途? jpg是一种有损图片压缩格式,支持的颜色数量很多,适用于保存颜色较多且比较复杂的摄影图片或写实图像,且生成的文件体积较小: jpg格式是一种大小与质量相平衡的压缩图片格式.通俗一点讲,就是:高的压缩比=低的图片质量=小的文件大小.反之,低的压缩比=高的图片质量=大的文件大小.由于jpg文件无法保持100%的原始图像的像素数据,所以它不被认为是一种无损图像格式. 注:jpg,jpeg这两种格式其实是一样的. 用途:由于这种极其敏感的平

WEB前端笔试题(2)——狼厂

1.CSS属性position的属性值有哪些,描述他们的作用 值 描述 absolute 绝对定位,相对于static定位以外的第一个父级元素进行定位 元素的位置通过left right top bottom属性进行规定 fixed 绝对定位,相对于浏览器进行定位 元素的位置通过left right top bottom属性进行规定 relative 相对定位,相对于其他正常位置(即不用relative时在正常流中的的位置) 默认值 没有定位,元素出现在正常流中 忽略left right top

WEB前端笔试题(1)——狼厂

1.至少写出3个css3新增的属性,HTML5强调标签的语义化,写出5个HTML5的语义化标签. 边框:border-radius.box-shadow.border-image 背景:background-clip.background-size.background-origin 文本:text-shadow.word-wrap.word-break.text-overflow:ellipsis 字体:@font-face 转换:transform.transform-origin 过度:t

WEB前端笔试题(4)

1.CSS hack的技巧 !important除IE6外都识别,通用: background-color:blue; /*所有浏览器*/ background-color:red\9;/*所有的ie*/ background-color:yellow\0; /* ie8+*/ *background-color:pink; /* ie7.ie6*/ 2.什么是CSS层叠 CSS层叠是指CSS样式在针对同一元素配置同一属性时,依据层叠规则(权重)来处理冲突,选择应用权重高的CSS选择器所指定的属

WEB前端笔试题(3)——前端安全问题

1.XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS. 恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的. 类型: (1)来自内部的攻击 主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞. (2)来自外部的攻击,主要指的自己构