必看前端笔试题.pdf
《必看前端笔试题.pdf》由会员分享,可在线阅读,更多相关《必看前端笔试题.pdf(99页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、初级 Javascript:1.J a v a S c r i p t是一门什么样的语言,它有哪些特点?没 有 标 准 答 案。2.J a v a S c r i p t的数据类型都有什么?基 本 数 据 类 型:S t r i n g,b ool e a n,N u m b e r,U n d e f i n e d,N u l 1引 用 数 据 类 型:O b j e c t (Ar r a y,Da t e,R e g Ex p,Fu n c t i on)那 么 问 题 来 了,如何判断某变量是否为数组数据类型?方 法 一.判 断 其 是 否 具 有“数组性质”,如s l i c e。
2、方 法。可自己给该变量定义s l i c e方 法,故有时会失效 方法二.ob j i n s t a n c e of Ar r a y在 某 些I E版本中不正确 方法三,方法一二皆有漏洞,在ECM AS c r i p t s中定义了新方法Ar r a y.i s Ar r a y(),保 证 其 兼 容 性,最 好 的 方 法 如 下:JavaScriptif(typeof Array.isArray-undefined)2(Array.isArray h function(arg)return Object,prototype.toString.cal K a rg)object A
3、rray);63.已 知ID的Input输 入 框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)JavaScriptdocument.getElementByldC ID).value4.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)JavaScriptvar domList-document.getElementsByTagName(,inputt)var checkBoxList=;var len-domList.length;/缓存到局部变量while(len),/使用 while a for循环更高if(domListlen.type 一 checkbo
4、x)checkBoxList.push(domListlen);)8)5,设置一个已知ID的DIV的htm l容 为xxxx,字体颜色设置为黑色(不使用第三方框架)JavaScriptvar dom:document.getElementBy!d(ID”);dom.innerHTML=xxxx”dom.style,color=MOO”6.当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?直接在 D O M 里绑定事件:div onclick=test。在 JS 里通过 onclick 绑 定:xxx.onclick=test 通过事件添加进行绑定:addEventListene
5、r(xxx,click,test)那么问题来了 Javascript的事件流模型都有什么?“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡7.什么是Ajax和JSON,它们的优缺点。Ajax是异步JavaScript和XML,用于在Web页面中实现异步数据交互。优 点:可以使得页面不重载全部容的情况下加载局部容,降低数据传输量避免用户不断刷新或者跳转页面,提高用户体验缺 点 对搜索引擎不友好(要实现ajax下的前后退功能成本较大 可能造成请求数的增加 跨域问题
6、限制JSON是一种轻量级的数据交换格式,ECMA的一个子集优 点:轻 量 级、易于人的阅读和编写,便 于 机 器(JavaScript)解 析,支持复合数据类型(数 组、对 象、字 符 串、数字)8.看下列代码输出为何?解释原因。JavaScriptvar a;alert(typeof a);undefinedalert(b);报错解 释:Undefined是一个只有一个值的数据类型,这 个 值 就 是“undefined”,在使用v a r声明变量但并未对其减值进行初始化时,这个变量的值就是undefined。而b由于未声明将报错。注意未申明的变量和声明了未赋值的是不一样的。9.看下列代码,
7、揄出什么?解释原因。JavaScriptvar a 二 null;alert(typeof a);7/object解 释:nul 1 是一个只有一个值的数据类型,这个值就是null 表示一个空指针对象,所 以 用 typeof检测会返回 object 10.看下列代码,输出什么?解释原因。JavaScriptvar undefinedundefined=31=true;42=true;50=false;60;NaN=NaN;8=false;null;/true/true/false/true/true/false/true9=!;/true u n d e f i n e d与n u l l相
8、 等,但 不 恒 等(=)一 个 是n u m b e r 一 个 是s t r i n g时,会 尝 试 将s t r i n g转 换 为n u m b e r 尝试 将b o o l e a n转 换 为n u m b e r,0或1 尝试 将O b j e c t转 换 成n u m b e r或s t r i n g,取决于另外一个对比量的类型 所 以,对 于0、空 字 符 串的判断,建议使用“=。=会 先 判 断 两 边 的值 类 型,类型不匹配时为f a l s e 0那 么 问 题 来 了,看 下 面 的 代 码,输 出 什 么,f o o的值为什么?JavaScriptvar
9、 foo=console,log(foo);console.log(typeof foo);执 行 完 后f o o的 值 为1 1 1 f o o的 类 型 为S t r i n g I L看 代 码 给 答 案。JavaScriptvar a new ObjectO;2a.value=1;3b=a;!b.value=2;alert(a.value);答 案:2 (考察引用数据类型细节)1 2.已知数组 v a r s t r i n g A r r a y =“T h i s ,i s ,B a i d u ,C a m p u s A l e r t出 T h i s i s B a i
10、 d u C a m p u s”。答 案:a l e r t(s t r i n g A r r a y.j o i n()已知有字符串f o o=g e t-e l e m e n t-b y-i d”,写一个f u n c t i o n 将其转化成驼峰表示法”g e t E l e n i e n t B y I d JavaScriptfunction combo(msg)2345678)var arr=msg.split(M-H);for(var il;iarr.length;i+)arri=arri.charAt(O).toUpperCase()+arri.substr(l,ar
11、ri.length-1);)msg=arr.join。);return msg;(考 察 基 础API)13.var numberArray=3,6,2,4,1,5 ;(考察基础 API)1)实 现对该数组的倒排,输 出5,1,4,2,6,32)实现对该数组的降序排列,输 出6,5,4,3,2,1JavaScriptf u n c t i o n c o m b o(m s g)2345678)v a r a r r=m s g.s p l i t(M-H);f o r(v a r i l;i a r r.l e n g t h;i+)a r r i =a r r i .c h a r A t
12、(O).t o U p p e r C a s e()+a r r i .s u b s t r(l,a r r i .l e n g t h-1);)m s g=a r r.j o i n。);r e t u r n m s g;1 4.输出今天的日期,以 Y Y Y Y-M M-D D 的 方 式,比如今天是2 0 1 4 年 9月 26日,贝 4 输出2 0 1 4-0 9-2 6J a v a S c r i p tv a r d n e w D a t e();2 获取年,getFullYear()返回4位的数字v a r y e a r =d.g e t F u l l Y e a
13、 r();4 获取月,月份比较特殊,。是1月,11是12月v a r m o n t h =d.g e t M o n t h O +1;6变成两位T m o n t h =m o n t h 1 0?O +m o n t h :m o n t h;8获取日9 v a r d a y 二 d.g e t D a t e O;I O d a y =d a y 1 0?O +d a y :d a y;a l e r t(y e a r +m o n t h +,+d a y);1 5 .将字符串$i d$n am e w 中的$i d 替换成 1 0,$n am e 替换成To n y (使用正则
14、表达式)答 案:$id$id_$name”.replace(/$id/g,10).replace(/$name/g,Tony);1 6 .为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数e s cap e H t m l,将,&,“进行转义Jav aScr i p tf u n ct i o n e s cap e H t m l(s t r)(r e t u r n s t r.r e p l a c e。”&f u n ct i o n(m at ch)s w i t ch (m at ch)4M/,cas e 7r e t u r n飞g t;”;8cas e9r
15、 e t u r n 4&am p;M1 0cas e 1 1r e t u r n“&q u o t;13);14)17.foo=fool I b a r,这行代码是什么意思?为什么要这样写?答 案:if(!foo)foo=bar;/如 果foo存 在,值 不 变,否则把b a r的值赋给foo。短路表达式:作为&和“I I”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。18.看下列代码,将会输出什么?(变量声明提升)JavaScriptvar foo=1;function()345Iconsole,log(foo);v
16、ar foo=2;console,log(foo);答 案:输 出undefined和2 上面代码相当于:JavaScriptvar foo=I;function()var foo;console,log(foo);/undefinedfoo=2;console,log(foo);/2;7函数声明与变量声明会被JavaScript引擎隐式地提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。1 9.用j s实现随机选取1 0 -1 0 0之 间 的1 0个 数 字,存入一个数组,并 排 序。JavaScriptvar iArray=;funtion getRandom(istart,ien
17、d)var iChoice=istart-iend+1;r e t u r n Mat h,f l o o r(Mat h.r an d o m O 米 i C h o i ce +i s t ar t;5)f o r(v ar i=0;i 1 0;i+)i A r r ay.p u s h(g e t Ran d o m(1 0,1 0 0);8)i A r r ay.s o r t();2 0 .把两个数组合并,并删除第二个元素。Jav aScr i p tI v ar ar r ay 1 =,a,,,b,,,c,;2 v ar bA r r ay =,d,,,e,,,f,;v ar cA
18、 r r ay =ar r ai d.co n cat(bA r r ay);I cA r r ay.s p l i ce d,1);2 1 .怎样添加、移 除、移 动、复 制、创建和查找节点(原生JS,实在基础,没细写每一步)1)创建新节点creat eDocument Fragment()创建一个 D O M 片段createE 1 ementO 创建一个具体的元素createTextNode()创建一个文本节点2)添 加、移 除、替 换、插入appendChi ld()添加removeChild()移除replaceChildO替换insertBeforeO 插入3)查找getEleme
19、ntsByTagName()getElementsByNameOgetElementByldO通过标签名称通过元素的Name属性的值通过元素Id,唯一性22.有这样一个 URL:item,taobao./item.htm?a=l&b=2&c=&d=xxx&e,请写一段 JS 程序提 取 U R L 中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个 json 结 构 中,如 a:1 ,b:2 ,c:M,d:xxx,e:undefined 答 案:Ja v a S c r i p tf u n c t i on s e r i 1i z e U r l(u r
20、l)(v a r r e s u l t =;u r l =u r l.s p l i t。?)1 ;v a r m a p =u r l.s p l i t(&H);f or(v a r i =0,l e n 二 m a p.l e n g t h;i l e n;i+)r e s u l t m a p i .s p l i t C,=M)0 =m a p i .s p l i t(=)l ;)r e t u r n r e s u l t;9 23.正则表达式构造函数v a r r e g=n e w R e g E x p(x x x)与正则表达字面量v a r r e g=/有什么不
21、同?匹配的正则表达式?答 案:当使用R e g E x p。构造函数的时候,不仅需要转义引号(即 表 示),并且还需要双反斜杠(即 表示一个)。使用正则表达字面量的效率更高。的 正 则 匹 配:JavaScriptvar regMail=/(a-zA-Z0-9_-)+(a-zA-Z0-9_-)+(.a-zA-Z0-9_-2,3)1,2)$/;24.看下面代码,给出输出结果。JavaScriptfor(var i=l;i=3;i+)setTimeoutC funct ionO!console,log(i);4),0);5);答 案:4 4 4。原 因:Ja v a s c r i p t事件义理
22、器在线程空闲之前不会运行。追 问,如何让上述代码输出12 3?JavaScriptforCvar i=l;i=3;i+)setTimeout(function(a)console,log(a);1 )(i),0);5);671/输出829325.写一个function,清除字符串前后的空格。(兼容所有浏览器)使用自带接口 t r i m O,考虑兼容性:JavaScripti f (I S t r i n g.p r ot ot y p e,t r i m)S t r i n g.p r ot ot y p e,t r i m =f u n c t i on O r e t u r n t h
23、 i s.r e p l a c e(/As+/,).r e p l a c e(7 s+$/,M);4)567 t es t t h e fu n ct i o nv a r s t r =t n t e s t s t r i n g .t r i m();a l e r t(s t r 二 二t e s t s t r i n g);a l er t s t r u e26.Javascript 中 cal lee 和 caller 的作用?答 案:caller是返回一个对函数的引用,该函数调用了当前函数;callee是返回正在被执行的function函 数 也就是所指定的functio
24、n对象的正文。那么问题来了?如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?(使用cal lee完成)Ja v a S c r i p tvar result=;2function fn(n)/典型的斐波那契数列if(n=l)return I;(else if(n=2)return 1;7 elseif(resultn)(return resultn;)else11 /argument,cal lee()表示 fn()resu11n=arguments.callee(n 1)Targuments.callee
25、(n-2);return resultn;15 16)中级 Javascript:1.实现一个函数c l on e,可以对Ja v a S c r i p t中的5种主要的数据类型(包括N u m be r S t r i n g、O bj e c t、Ar r a y、Bool e a n)进行值复制 考 察 点1 :对于基本数据类型和引用数据类型在存中存放的是值还是指针这一区别是否清楚 考察点2:是否知道如何判断一个变量是什么类型的 考察点3:递归算法的设计JavaScript1 方法一:O bj e c t,p r ot ot y p e,c l on e =f u n c t i on
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 前端 笔试
限制150内