JavaScript外贸面试笔试题题都有哪些?谁能分享分享?

1358被浏览188123分享邀请回答taco-spolsky.github.io/你要做的就是找到某种方法,让 Taco 那充满 Bug 的代码最终能够显示出你的名字!----------很有趣的一道题原文:Taco (our mascot) is pretty terrible at writing code, but his recommendation still carries a lot of weight. He's put together a page that we can use to get his latest recommendations:To apply, please email
with "recommended" as the first word in the subject line, and include a link to Taco's recommendation page in the body (hopefully a link that leads to a page where you are the one being recommended!)To be clear, solving this puzzle involves finding a way to trick Taco's buggy code into recommending you. The body of your email should look something like this:Taco recommends me! For proof, see: …something…… the rest of your cover letter …1013 条评论分享收藏感谢收起226 条评论分享收藏感谢收起查看更多回答您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
javascript面试题..doc 45页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
javascript面试题.
你可能关注的文档:
··········
··········
第一题 编写一个方法 求一个字符串的字节长度 第二题 如何控制alert中的换行 第三题 解释document.getElementById(&ElementID&).style.fontSize=&1.5em& 第四题 将一个类似图中的效果分离成css和html 第五题 按照格式 xxxx年xx月xx日xx时xx分xx秒动态显示时间 要求不足10的补0 第六题 编写一个方法 去掉一个数组的重复元素 第七题 说出3条以上ff和ie的脚本兼容问题 第八题 按要求写一个简单的ajax示例 简单的没意义 就不写了
&script language=&javascript& type=&text/javascript&& new function(s) { if(!arguments.length||!s) if(&&==s) return 0; var l=0; for(var i=0;i&s.i++) { ?? if(s.charCodeAt(i)&255) l+=2; ?? else l++; } alert(l); }(&hello你好,我好,大家好!world!&); &/script&
&script language=&javascript& type=&text/javascript&& alert(&hello\nworld&); &/script&
em是个相对单位。
&script language=&javascript& type=&text/javascript&& new function() { with(new Date()) { ?? var t=function(a){return a&10?&0&+a:a;} ?? alert(getFullYear()+&年&+t(getMonth()+1)+&月&+t(getDate())+&日&+t(getHours())+&时&+t(getMinutes())+&分&+t(getSeconds())+&秒&); } } &/script&
&script language=&javascript& type=&text/javascript&& Atotype.strip=function() { if(this.length&2) return [this[0]]||[]; var arr=[]; for(var i=0;i&this.i++) { ?? arr.push(this.splice(i--,1)); ?? for(var j=0;j&this.j++) ?? { ??? if(this[j]==arr[arr.length-1]) ??? { ???? this.splice(j--,1); ??? } ?? } } } var arr=[&abc&,85,&abc&,85,8,8,1,2,5,4,7,8]; alert(arr.strip()); &/script&
&html& &head&&title&loading&/title&&/head& &body& &div id=&load&&数据正在加载&/div& &script type=&text/javascript&& var Browser={ /** Browser对象用于检测浏览器,其中用到了IE的条件编译 */ /*@cc_on isIE:true, @*/ isFF:window.navigator.appName.toUpperCase().indexOf(&NETSCAPE&)!=-1?true:false, isOpera:window.navigator.appName.toUpperCase().ind
正在加载中,请稍后...
92页106页154页76页91页85页98页65页96页95页社会化媒体
了解更多>>
桂ICP备 号
桂公网安备 36号
阅读下一篇
自媒体运营攻略
行业经验交流
Hi,在你登录以后,就可以永久免费的收藏任何您感兴趣的内容,关注感兴趣的作者!
请输入正确的邮箱
已有帐号请点击
帐号创建成功!
我们刚刚给你发送了一封验证邮件
请在48小时内查收邮件,并按照提示验证邮箱
感谢你对微口网的信任与支持
如果你没有收到邮件,请留意垃圾箱 或 重新发送
你输入的邮箱还未注册
还没有帐号请点击
你输入的邮箱还未注册
又想起来了?
邮件发送成功!
我们刚刚给你发送了一封邮件
请在5分钟内查收邮件,并按照提示重置密码
感谢你对微口网的信任与支持
如果你没有收到邮件,请留意垃圾箱 或 重新发送
对不起,你的帐号尚未验证
如果你没有收到邮件,请留意垃圾箱 或
意见与建议
请留下您的联系方式
* 留下您正确的联系方式,以便工作人员尽快与你取得联系
新!变现功能上线
现在,只要登录微口网账号,点击“我要变现”,就能领取任务,轻松推广商品,坐收丰厚佣金,只要一分钟操作,就能获取50%超高提成!
合适的商品更容易推广,你可以根据公众号定位,选择调性最适合推广的商品;如果没有公众号,你也可以选择自己喜爱或者符合自己品味的商品。
优秀的产品文案能让我们赚更多钱,你可以直接使用我们平台提供的文案素材;如果你不想用,那么你可以自己随心撰写合适的产品文案。
关于购买链接
你可以将购买链接粘贴在“阅读原文”处;或者分享购买链接/二维码至社交平台或社交群内。只要有用户通过此链接购买了商品即可获得丰厚提成!
转藏至我的藏点【内附答案】各大企业JavaScript笔试面试题汇总!
今天分享一篇关于百度、阿里巴巴、腾讯Java面试笔试题,所有内容来自作者亲身经历,建议看完收藏,对你以后面试会有很大帮助。
注:明天分享文章“各大互联网公司HTML+CSS面试题”!
很多面试题是我自己面试BAT亲身经历碰到的。整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益。
而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正。
前面几题是会很基础,越下越有深度。
初级Java:
1.Java是一门什么样的语言,它有哪些特点?
没有标准答案。
2.Java的数据类型都有什么?
基本数据类型:String,boolean,Number,Undefined, Null
引用数据类型:Object(Array,Date,RegExp,Function)
那么问题来了,如何判断某变量是否为数组数据类型?
方法一.判断其是否具有“数组性质”,如slice()方法。可自己给该变量定义slice方法,故有时会失效
方法二.obj instanceof Array 在某些IE版本中不正确
方法三.方法一二皆有漏洞,在ECMA 5中定义了新方法Array.isArray(), 保证其兼容性,最好的方法如下:
Array.isArray===
"undefined")
Array.isArray =
function(arg){
Object.prototype.toString.call(arg)===
"[object Array]"
3.已知ID的Input输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)
1 document.getElementById(“ ID”) .value
4.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
1vardomList = document.getElementsByTagName(‘input’) 2varcheckBoxList = []; 3varlen = domList. //缓存到局部变量4while(len--) { //使用while的效率会比for循环更高5if(domList[len].type == ‘checkbox’) { 6checkBoxList.push(domList[len]); 7} 8}
5.设置一个已知ID的DIV的html内容为xxxx,字体颜色设置为黑色(不使用第三方框架)
1vardom = document.getElementById(“ID”); 2dom.innerHTML = “xxxx” 3dom.style.color = “ #000”
6.当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?
直接在DOM里绑定事件:&div onclick=”test()”&&/div&
在JS里通过onclick绑定:xxx.onclick = test
通过事件添加进行绑定:addEventListener(xxx, ‘click’, test)
那么问题来了,Java的事件流模型都有什么?
“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播
“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的
“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡
7.什么是Ajax和JSON,它们的优缺点。
Ajax是异步Java和XML,用于在Web页面中实现异步数据交互。
可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量
避免用户不断刷新或者跳转页面,提高用户体验
对搜索引擎不友好(
要实现ajax下的前后退功能成本较大
可能造成请求数的增加
跨域问题限制
JSON是一种轻量级的数据交换格式,ECMA的一个子集
优点:轻量级、易于人的阅读和编写,便于机器(Java)解析,支持复合数据类型(数组、对象、字符串、数字)
8.看下列代码输出为何?解释原因。
1vara; 2alert( typeofa); // undefined3alert(b); // 报错
解释:Undefined是一个只有一个值的数据类型,这个值就是“undefined”,在使用var声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined。而b由于未声明将报错。注意未申明的变量和声明了未赋值的是不一样的。
9.看下列代码,输出什么?解释原因。
1vara = null; 2alert( typeofa); //object
解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。
10.看下列代码,输出什么?解释原因。
1 2undefined == //true31== true; //true42== true; //false50== false; //true60== ''; //true7NaN == NaN; //false8[] == false; //true9[] == ![]; //true
undefined与null相等,但不恒等(===)
一个是number一个是string时,会尝试将string转换为number
尝试将boolean转换为number,0或1
尝试将Object转换成number或string,取决于另外一个对比量的类型
所以,对于0、空字符串的判断,建议使用 “===” 。“===”会先判断两边的值类型,类型不匹配时为false。
那么问题来了,看下面的代码,输出什么,foo的类型为什么?
1varfoo = "11"+ 2- "1"; 2console.log(foo); 3console.log( typeoffoo);
执行完后foo的值为111,foo的类型为Number。
1var foo = "11"+ 2+ "1"; //体会加一个字符串 '1'和 减去一个字符串 '1'的不同 2console.log(foo); 3console.log( typeoffoo);
执行完后foo的值为113,foo的类型为String。
11.看代码给答案。
1vara = newObject(); 2a. value= 1; 3b = 4b. value= 2; 5alert(a. value);
答案:2(考察引用数据类型细节)
12.已知数组var stringArray = [“This”, “is”, “Baidu”, “Campus”],Alert出”This is Baidu Campus”。
答案:alert(stringArray.join(“”))
已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”。
1functioncombo(msg){ 2vararr=msg.split( "-"); 3for( vari= 1;i&arr.i++){ 4arr[i]=arr[i].charAt( 0).toUpperCase()+arr[i].substr( 1,arr[i].length -1); 5} 6msg=arr.join( ""); 7return 8}
(考察基础API)
13.var numberArray = [3,6,2,4,1,5]; (考察基础API)
1) 实现对该数组的倒排,输出[5,1,4,2,6,3]
2) 实现对该数组的降序排列,输出[6,5,4,3,2,1]
1varnumberArray = [ 3, 6, 2, 4, 1, 5]; 23numberArray.reverse(); // 5,1,4,2,6,345numberArray.sort( function(a,b){ //6,5,4,3,2,16returnb-a; 7})
14.输出今天的日期,以YYYY-MM-DD的方式,比如今天是日,则输出
1vard = newDate(); 2// 获取年,getFullYear()返回4位的数字3varyear = d.getFullYear(); 4// 获取月,月份比较特殊,0是1月,11是12月5varmonth = d.getMonth() + 1; 6// 变成两位7month = month & 10? '0'+ month : 8// 获取日9varday = d.getDate(); 10day = day & 10? '0'+ day : 11alert(year + '-'+ month + '-'+ day);
15.将字符串”&tr&&td&{$id}&/td&&td&{$name}&/td&&/tr&”中的{$id}替换成10,{$name}替换成Tony (使用正则表达式)
答案:”&tr&&td&{$id}&/td&&td&{$id}_{$name}&/td&&/tr&”.replace(/{$id}/g, ’10′).replace(/{$name}/g, ‘Tony’);
16.为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将&, &, &, “进行转义
1functionescapeHtml(str) { 2returnstr.replace( /[&&”&]/g, function(match) { 3switch(match) { 4case“&”: 5return“&”; 6case“&”: 7return“&”; 8case“&”: 9return“&”; 10case“””: 11return“"”; 12} 13}); 14}
17.foo = foo||bar ,这行代码是什么意思?为什么要这样写?
答案:if(!foo) foo = //如果foo存在,值不变,否则把bar的值赋给foo。
短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。
18.看下列代码,将会输出什么?(变量声明提升)
1varfoo = 1; 2function(){ 3console.log(foo); 4varfoo = 2; 5console.log(foo); 6}
答案:输出undefined 和 2。上面代码相当于:
1varfoo = 1; 2function(){ 3var 4console.log(foo); //undefined5foo = 2; 6console.log(foo); // 2; 7}
函数声明与变量声明会被Java引擎隐式地提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。
19.用js实现随机选取10–100之间的10个数字,存入一个数组,并排序。
1variArray = []; 2funtion getRandom(istart, iend){ 3variChoice = istart - iend + 1; 4returnMath.floor( Math.random() * iChoice + 5} 6for( vari= 0; i& 10; i++){ 7iArray.push(getRandom( 10, 100)); 8} 9iArray.sort();
20.把两个数组合并,并删除第二个元素。
1vararray1 = [ 'a', 'b', 'c']; 2varbArray = [ 'd', 'e', 'f']; 3varcArray = array1.concat(bArray); 4cArray.splice( 1, 1);
21.怎样添加、移除、移动、复制、创建和查找节点(原生JS,实在基础,没细写每一步)
1)创建新节点
createDocumentFragment() //创建一个DOM片段
() //创建一个具体的元素
createTextNode() //创建一个文本节点
2)添加、移除、替换、插入
removeChild() //移除
replaceChild() //替换
insertBefore() //插入
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性
22.有这样一个URL:/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}。
1function serilizeUrl(url) { 2varresult = {}; 3url = url. split( "?")[ 1]; 4varmap= url. split( "&"); 5for( vari = 0, len = map. i & i++) { 6result[ map[i]. split( "=")[ 0]] = map[i]. split( "=")[ 1]; 7} 8return 9}
23.正则表达式构造函数var reg=new RegExp(“xxx”)与正则表达字面量var reg=//有什么不同?匹配邮箱的正则表达式?
答案:当使用RegExp()构造函数的时候,不仅需要转义引号(即”表示”),并且还需要双反斜杠(即表示一个)。使用正则表达字面量的效率更高。
邮箱的正则匹配:
1varregMail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;
24.看下面代码,给出输出结果。
1for( vari= 1;i&= 3;i++){ 2setTimeout( function(){ 3console.log(i); 4}, 0); 5};
答案:4 4 4。
原因:Java事件处理器在线程空闲之前不会运行。那么问题来了,如何让上述代码输出1 2 3?
1for( vari= 1;i&= 3;i++){ 2setTimeout(( function(a){ //改成立即执行函数3console.log(a); 4})(i), 0); 5}; 671//输出8293
25.写一个function,清除字符串前后的空格。(兼容所有浏览器)
使用自带接口trim(),考虑兼容性:
1if(! String.prototype.trim) { 2String.prototype.trim = function() { 3returnthis.replace( /^s+/, "").replace( /s+$/, ""); 4} 5} 67// test the function 8varstr = " tn test string ".trim(); 9alert(str == "test string"); // alerts "true"
26.Java中callee和caller的作用?
caller是返回一个对函数的引用,该函数调用了当前函数;
callee是返回正在被执行的function函数,也就是所指定的function对象的正文。
那么问题来了?如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?(使用callee完成)
1varresult=[]; 2functionfn(n){ //典型的斐波那契数列3if(n== 1){ 4return1; 5} elseif(n== 2){ 6return1; 7} else{ 8if(result[n]){ 9returnresult[n]; 10} else{ 11//argument.callee()表示fn()12result[n]= arguments.callee(n -1)+ arguments.callee(n -2); 13returnresult[n]; 14} 15} 16} 中级Java:
1.实现一个函数clone,可以对Java中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制
考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别是否清楚
考察点2:是否知道如何判断一个变量是什么类型的
考察点3:递归算法的设计
// 方法一:
Object.prototype.clone =
function(){
this.constructor ===
Array? [] : {};
this[e] ===
this[e].clone() :
//方法二:
/**12 * 克隆一个对象13 * @param Obj14 * @returns15 */
functionclone(Obj) {
instanceof
19buf = [];
//创建一个空的数组
vari = Obj.
while(i--) {
22buf[i] = clone(Obj[i]);
instanceof
26buf = {};
//创建一个空对象
//为这个对象添加新的属性
28buf[k] = clone(Obj[k]);
//普通变量直接赋值
2.如何消除一个数组里面重复的元素?
1vararr=[ 1, 2, 3, 3, 4, 4, 5, 5, 6, 1, 9, 3, 25, 4]; 2functiondeRepeat(){ 3varnewArr=[]; 4varobj={}; 5varindex= 0; 6varl=arr. 7for( vari= 0;i&l;i++){ 8if(obj[arr[i]]== undefined) 9{ 10obj[arr[i]]= 1; 11newArr[index++]=arr[i]; 12} 13elseif(obj[arr[i]]== 1) 14continue; 15} 16returnnewA 1718} 19varnewArr2=deRepeat(arr); 20alert(newArr2); //输出1,2,3,4,5,6,9,25
3.小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp)。从这段描述可以得到以下对象:
1functionDog() { 2this.wow = function() { 3alert(’Wow’); 4} 5this.yelp = function() { 6this.wow(); 7} 8}
小芒和小贤一样,原来也是一条可爱的小狗,可是突然有一天疯了(MadDog),一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。请根据描述,按示例的形式用代码来实。(继承,原型,setInterval)
1functionMadDog(){ 2this.yelp = function(){ 3varself= 4setInterval( function(){ 5self.wow(); 6}, 500); 7} 8} 9MadDog.prototype = newDog(); 1011//for test12vardog = newDog(); 13dog.yelp(); 14varmadDog = newMadDog(); 15madDog.yelp();
4.下面这个ul,如何点击每一列的时候alert其index?()
1 &ulid=”test”&2 &li&这是第一条 &/li&3 &li&这是第二条 &/li&4 &li&这是第三条 &/li&5 &/ul&
1// 方法一:2varlis= document.getElementById( '2223').getElementsByTagName( 'li'); 3for( vari= 0;i& 3;i++) 4{ 5lis[i].index=i; 6lis[i].onclick= function(){ 7alert( this.index); 8}; 9} 1011//方法二:12varlis= document.getElementById( '2223').getElementsByTagName( 'li'); 13for( vari= 0;i& 3;i++) 14{ 15lis[i].index=i; 16lis[i].onclick=( function(a){ 17returnfunction() { 18alert(a); 19} 20})(i); 21}
5.编写一个Java函数,输入指定类型的选择器(仅需支持id,class,tagName三种简单CSS选择器,无需兼容组合选择器)可以返回匹配的DOM节点,需考虑浏览器兼容性和性能。
/*** @param selector {String} 传入的CSS选择器。* @return {Array}*/
答案:(过长,点击打开)
6.请评价以下代码并给出改进意见。
1if( window.addEventListener){ 2varaddListener = function(el,type,listener,useCapture){ 3el.addEventListener(type,listener,useCapture); 4}; 5} 6elseif( document.all){ 7addListener = function(el,type,listener){ 8el.attachEvent( "on"+type, function(){ 9listener.apply(el); 10}); 11} 12}
不应该在if和else语句中声明addListener函数,应该先声明;
不需要使用window.addEventListener或document.all来进行检测浏览器,应该使用能力检测;
由于attachEvent在IE中有this指向问题,所以调用它时需要处理一下
改进如下:
1 functionaddEvent(elem, type, handler){ 2 if(elem.addEventListener){ 3 elem.addEventListener( type, handler, false); 4 } elseif(elem.attachEvent){ 5 elem[ 'temp'+ type+ handler] = 6 elem[ type+ handler] = function(){ 7 elem[ 'temp'+ type+ handler].apply(elem); 8 }; 9 elem.attachEvent( 'on'+ type, elem[ type+ handler]); 10 } else{11 elem[ 'on'+ type] =12 }13 }
7.给String对象添加一个方法,传入一个string类型的参数,然后将string的每个字符间价格空格返回,例如:
addSpace(“”) // -& ‘h e l l o w o r l d’
1String.prototype.spacify = function(){ 2returnthis.split( '').join( ' '); 3};
接着上述答题,那么问题来了
1)直接在对象的原型上添加方法是否安全?尤其是在Object对象上。(这个我没能答出?希望知道的说一下。)
2)函数声明与函数表达式的区别?
答案:在Jav中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。(函数声明提升)
8.定义一个log方法,让它可以代理console.log的方法。
可行的方法一:
1functionlog(msg) { 2console.log(msg); 3} 45log( "hello world!") // hello world!6
如果要传入多个参数呢?显然上面的方法不能满足要求,所以更好的方法是:
1functionlog(){ 2console.log.apply( console, arguments); 3};
那么问题来了,apply和call方法的异同?
对于apply和call两者在作用上是相同的,即是调用一个对象的一个方法,以另一个对象替换当前对象。将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
但两者在参数上有区别的。对于第一个参数意义都一样,但对第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。 如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3]) 。
9.在Java中什么是伪数组?如何将伪数组转化为标准数组?
伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。
假设接第八题题干,我们要给每个log方法添加一个”(app)”前缀,比如’hello world!’ -&’(app)hello world!’。方法如下:
1functionlog(){ 2varargs = Array.prototype.slice.call( arguments); //为了使用unshift数组方法,将argument转化为真正的数组3args.unshift( '(app)'); 45console.log.apply( console, args); 6};
10.对作用域上下文和this的理解,看下列代码:
1varUser= { 2count: 1, 34getCount: function() { 5returnthis. count; 6} 7}; 89console.log( User.getCount()); // what?1011varfunc= User.getCount;12 console.log(func()); // what?
问两处console输出什么?为什么?
答案是1和undefined。
func是在winodw的上下文中被执行的,所以会访问不到count属性。
那么问题来了,如何确保Uesr总是能访问到func的上下文,即正确返回1。
答案:正确的方法是使用Function.prototype.bind。兼容各个浏览器完整代码如下:
1Function.prototype.bind = Function.prototype.bind || function(context){ 2varself = this; 34returnfunction(){ 5returnself.apply(context, arguments); 6}; 7} 89varfunc = User.getCount.bind(User); 10console.log(func());
11.原生JS的window.与Jquery的$(document).ready(function(){})有什么不同?如何用原生JS实现Jq的ready方法?
window.()方法是必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
1/* 2 * 传递函数给whenReady() 3 * 当文档解析完毕且为操作准备就绪时,函数作为document的方法调用 4 */5varwhenReady = ( function() { //这个函数返回whenReady()函数6varfuncs = []; //当获得事件时,要运行的函数7varready = false; //当触发事件处理程序时,切换为true89//当文档就绪时,调用事件处理程序10functionhandler(e) { 11if(ready) return; //确保事件处理程序只完整运行一次1213//如果发生onreadystatechange事件,但其状态不是complete的话,那么文档尚未准备好14if(e.type === 'onreadystatechange'&& document.readyState !== 'complete') { 15return; 16} 1718//运行所有注册函数19//注意每次都要计算funcs.length20//以防这些函数的调用可能会导致注册更多的函数21for( vari= 0; i&funcs. i++) { 22funcs[i].call( document); 23} 24//事件处理函数完整执行,切换ready状态, 并移除所有函数25ready = true; 26funcs = null; 27} 28//为接收到的任何事件注册处理程序29if( document.addEventListener) { 30document.addEventListener( 'DOMContentLoaded', handler, false); 31document.addEventListener( 'readystatechange', handler, false); //IE9+32window.addEventListener( 'load', handler, false); 33} elseif( document.attachEvent) { 34document.attachEvent( 'onreadystatechange', handler); 35window.attachEvent( '', handler); 36} 37//返回whenReady()函数38returnfunctionwhenReady(fn) { 39if(ready) { fn.call( document); } 40else{ funcs.push(fn); } 41} 42})();
如果上述代码十分难懂,下面这个简化版:
1functionready(fn){ 2if( document.addEventListener) { //标准浏览器3document.addEventListener( 'DOMContentLoaded', function() { 4//注销事件, 避免反复触发5document.removeEventListener( 'DOMContentLoaded', arguments.callee, false); 6fn(); //执行函数7}, false); 8} elseif( document.attachEvent) { //IE9document.attachEvent( 'onreadystatechange', function() { 10if( document.readyState == 'complete') { 11document.detachEvent( 'onreadystatechange', arguments.callee); 12fn(); //函数执行13} 14}); 15} 16};
12.(设计题)想实现一个对页面某个节点的拖曳?如何做?(使用原生JS)
回答出概念即可,下面是几个要点
给需要拖拽的节点绑定mousedown, mousemove, mouseup事件
mousedown事件触发后,开始拖拽
mousemove时,需要通过event.clientX和clientY获取拖拽位置,并实时更新位置
mouseup时,拖拽结束
需要注意浏览器边界的情况
1functionsetcookie(name,value,days){ //给cookie增加一个时间变量2varexp = newDate(); 3exp.setTime(exp.getTime() + days* 24* 60* 60* 1000); //设置过期时间为days天4document.cookie = name + "="+ escape (value) + ";expires="+ exp.toGMTString(); 5} 6functiongetCookie(name){ 7varresult = ""; 8varmyCookie = ""+document.cookie+ ";"; 9varsearchName = "+name+"= ";10 var startOfCookie = myCookie.indexOf(searchName);11 var endOfC12 if(satrtOfCookie != -1){13 startOfcookie += searchName.14 endOfCookie = myCookie.indexOf("; ",startOfCookie);15 result = (myCookie.substring(startOfCookie,endOfCookie));16 }1718 }19 (function(){20 var oTips = document.getElementById('tips');//假设tips的id为tips21 var page = {22 check: function(){//检查tips的cookie是否存在并且允许显示23 var tips = getCookie('tips');24 if(!tips || tips == 'show')//tips的cookie不存在25 if(tips == "never_show_again ")26 },27 hideTip: function(bNever){28 if(bNever) setcookie('tips', 'never_show_again', 365);29 oTips.style.display = "none ";//隐藏30 },31 showTip: function(){32 oTips.style.display = "inline ";//显示,假设tips为行级元素33 },34 init: function(){35 var _this =36 if(this.check()){37 _this.showTip();38 setcookie('tips', 'show', 1);39 }40 oTips.onclick = function(){41 _this.hideTip(true);42 };43 }44 };45 page.init();46 })();
14.说出以下函数的作用是?空白区域应该填写什么?
1//define 2( function(window){ 3functionfn(str){ 4this.str= 5} 67fn.prototype.format = function(){ 8vararg = ______; 9returnthis.str.replace(_____, function(a,b){ 10returnarg[b]|| ""; 11}); 12} 13window.fn = 14})( window); 1516//use17( function(){ 18vart = newfn( '&p&&a href="{0}"&{1}&/a&&span&{2}&/span&&/p&'); 19console.log(t.format( '', 'Alibaba', 'Welcome')); 20})();
答案:访函数的作用是使用format函数将函数的参数替换掉{0}这样的内容,返回一个格式化后的结果:
第一个空是:arguments
第二个空是:/{(d+)}/ig
15.用面向对象的Java来介绍一下自己。(没答案哦亲,自己试试吧)
答案: 对象或者Json都是不错的选择哦
* 链接:/coco1s/p/4029708.html
?? 达内web前端免费课程
针对零基础设置的HTML5+CSS3+Java入门课程,只要你喜欢且想了解web前端,但是不知道自己学的会不?适不适合自己学?都可以通过这样无成本的方式,对自己进行一次全面的检测,点击“阅读原文”直接抢达内12月份免费训练营~,给自己一个接触互联网高薪技术的机会。
达内上市集团
每年10万人选择达内培训
选择的人多自然是好培训
长按二维码关注我们
点击下方“阅读原文”抢web前端免费课程名额 !
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点}

我要回帖

更多关于 java面试笔试题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信