天津web前端培训会给大家讲一些webpack面试题题吗

整理总结的一些前端面试题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
整理总结的一些前端面试题
&&web前端面试求职宝典!值得拥有!
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢学web前端开发,培训还是自学靠谱? - 知乎6473被浏览814626分享邀请回答/question/55886635/answer/ 另外之前提到的
里面的内容比较老旧,现在有了更好的选择,那就是 MDN ,它的地址在这:
。期间有不少朋友反应《JavaScript DOM 编程艺术》看不懂,这其中还包括现实中我身边想入行前端的朋友。为此我专门写了本关于 JavaScript 语言基础的电子书,想看《JavaScript DOM 编程艺术》但是没看懂的朋友,可以考虑先看这本书第一部分《语法基础》然后再继续看《JavaScript DOM 编程艺术》,电子书的地址在这: ,希望会对大家有所帮助。 3.0K342 条评论分享收藏感谢收起396132 条评论分享收藏感谢收起查看更多回答5 个回答被折叠()您当前的位置 :
达内web前端培训:Web开发人员必须避开的坑
扫码阅读手机版
  说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML、CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框架。在将任务分解为这几步之后,接下来要做的就简单多了,可以去网上找文章,浏览论坛,看看那些能提供更好的Web体验提示的示例。
  然而不管是走哪条路,犯错却是每一个开发人员都不可避免的。虽然有些错误与某一个具体的行为相关,但有些错误却是所有Web开发人员都需要面对的挑战。因此,通过研究,体验和观察,达内web前端培训专家()总结了Web开发人员常犯的10个错误——以及如何避免这些错误。
  写一些过时的HTML
  错误:早期的互联网比起我们现在,标记的选择要少得多。然而,旧习难改,现在很多开发人员写的HTML就好像还身处20世纪一样。举例来说,我们使用&table&元素用于布局,当其他特定语义标签更适合的时候使用&span&或&div&元素,在当前HTML标准不受支持的时候使用&center&或&font&标签,在页面上间隔项目,如果有大量&字符实体的话。
  影响:遵从这种过时的HTML规则可能会导致标记过于复杂,结果是在不同的浏览器中发生不同的行为。而且没有了改进浏览器的动力,因为没有必要更新到最新的浏览器,如Microsoft Edge,哪怕是Internet Explorer版本(11、10、9)也变得没有必要。
  如何避免:停止使用&table&元素用于内容布局,限制使用&table&元素来显示表格数据。例如可以去whatwg.org了解当前可用的标记选项。使用HTML去描述内容是什么,而不是说明内容如何展现。对于如何显示内容,请使用CSS。达内web前端免费课程报名链接:/7ZBjyu
  “明明在我的浏览器中是可行的……”
  错误:开发人员往往会偏爱某一个特定的浏览器,或者特别讨厌某一个,可能主要是因为对测试网页视图有所偏见。也有可能是因为从网上找到的代码示例不能保证会如何呈现在其他浏览器中。此外,一些浏览器对风格有不同的默认值。
  影响:以某一个浏览器为中心写的网站,在其他浏览器中显示时,其质量将会很差。
  如何避免:在开发过程中,在所有浏览器和版本中测试网页是不切实际的。不过,每隔一段时间,在多个浏览器中检查网站的样子不失为一个好方法。现在,不管你偏好的是什么平台,总有免费的工具可用:免费的虚拟机、网站扫描仪。Visual Studio等工具还可以调用多个浏览器,来显示你正在工作的单一页面。当涉及到CSS设计时,可以参考在中所示的那样“重置”所有的默认值。
  如果你的网站正在使用的CSS特性是专为某一浏览器特制的,那么注意它的引擎前缀,如-webkit-,-moz-和-ms-。对于行业在这方面的发展趋势指导,那么可以阅读以下参考:
  ?Microsoft Edge开发博客:A break from the past, part 2: Saying goodbye to ActiveX, VBScript, attachEvent
  ?QuirksMode.org:CSS vendor prefixes considered harmful
  Bruce Lawson: On Internet Explorer supporting -webkit- vendor prefixes
  上面这些参考资料解说了引擎前缀的革新,以及你还可以点击这里——这个网站提供了一些如何摒弃引擎前缀的实用建议。
  不好的格式
  错误:提示用户提供信息(特别是在输入文本字段的时候),并假设数据会如预期接收。
  影响:很多事情会(或者很有可能将会)出错,当我们信任用户输入的时候。如果无法提供所需的数据,或接收到的数据不能与下面的数据模式兼容,页面可能会失败。更为严重的是,有的用户可能会故意违背网站的数据库,例如可以通过注入式攻击(见OWASP:Top 10 2013-A1-Injections)。
  如何避免:你首先要做的事是确保用户清楚你需要什么类型的数据。比如说,如果你只说要地址,那用户不知道指的是单位,家庭还是电子邮件的地址!除了要具体,还要充分利用现在的HTML提供的数据验证技术。不管数据在浏览器端是如何验证的,确保它始终也在服务器端验证。不要让一个串接的T-SQL语句使用来自于用户输入的,各个字段的类型没有经过确认的数据。
  臃肿的响应结果
  错误:页面充满了许多高品质的图形和/或图片,这些图形和/或图片借助img元素的高度和宽度属性按比例缩小。来自于页面链接的文件,如CSS和JavaScript,很大。源HTML标记也可能是不必要的复杂和全面。
  影响:完全渲染页面的时间是如此之久,以致于一些用户放弃了,或者甚至于直接不耐烦地重新请求整个页面。在某些情况下,如果页面处理等待太久,会出现错误。
  如何避免:不要抱有现在互联网接入越来越快的侥幸心态——从而允许臃肿的场景。相反,要将从浏览器到你的网站的来回当为一种成本。图像是网页臃肿的主要罪犯。为了最大限度地减少图像成本,减轻页面加载的压力,可以试试以下三个技巧:
  问问你自己:“这些图形真的有必要吗?”删除不需要的图片。
  使用例如Shrink O’Matic或RIOT的工具来减少图像文件大小。
  预加载图像。这不会提高初始下载的成本,但可以让网站其他页面图像加载速度更快。
  另一种减少成本的方式是压缩CSS和JavaScript链接文件。有很多的工具,如Minify CSS和Minify JS都能帮你做到。
  创建所谓“应该能行”的代码
  错误:无论是JavaScript,还是在服务器上运行的代码,开发人员都需要测试并确认它是否可以正常工作,而不是在部署了之后,就认为它应该就能从一而终地运行。
  影响:不经过适当错误检查的网站就是对最终用户耍流氓。不仅会极大地影响用户体验,而且其错误消息内容的类型可能会给黑客线索来渗透这个站点。
  如何避免:是人都会犯错,这个哲理同样适用于编码。使用JavaScript,一定要实施好的技术来防止并抓住错误。虽然这篇文章描绘了用JavaScript编码Windows应用程序,但是大部分的内容也适用于web开发,许多提示都很不错!另一种能让代码变得可靠又能在未来变化中存活下来的方法是单元测试。
  如果我们够仔细,那么就能捕捉到服务器端的代码失败,而不被用户发现。只显示必要的信息,并且一定要确保设置友好的错误页面,如HTTP 404s。
  写分叉代码
  错误:本着支持所有浏览器和版本的崇高理念,开发人员立志创建可对任意可能情况作出回应的代码。代码中if语句成堆,所有方向都有分叉。
  影响:随着浏览器新版本的更新,代码文件会变得越来越笨拙和难以管理。
  如何避免:实现代码的功能检测和浏览器/版本检测。功能检测技术不仅可以显著减少代码量,还更易于阅读和管理。不妨考虑使用如Modernizr这样的库,不仅有助于功能检测,还能自动帮助提供不能跟上HTML5和CSS3速度的旧版浏览器的反馈支持。
  非响应式设计
  错误:假设开发/设计人员在相同尺寸的显示器上开发网站。
  影响:当在移动设备或在非常大的屏幕查看网站时,用户体验要么很难看到页面的重要方面,要么甚至要时刻注意着不导航至其他网页。
  如何避免:响应式的思维方式。在网站中使用响应式设计。这里有一些关于这方面的实用教程,包括响应式图片,还有一个非常受欢迎的库,那就是Bootstrap。
  制作无意义的页面
  错误:制作面向公众内容的网页才是有用的,绝不能不提供关于搜索引擎的任何线索。没有实现可访问性功能。
  影响:如果不能让搜索引擎发现网页,那么,可能会只有少量或根本没有访问。
  如何避免:使用SEO(搜索引擎优化)和HTML的支持可访问性。关于SEO,一定要添加标签以提供有意义的网页关键字和描述。 About Tech就写得很好,可以借鉴。为了能有更好的可访问性功能体验,请对每一个img和area标签提供一个alt="your image description"
  属性。更多建议请见About Tech。你也可以在Cynthia Says测试公共网页,看它是否兼容Section 508。
  网站过多刷新
  错误:创建的网站需要为每一个互动而全面刷新页面。
  影响:类似于页面臃肿(参见#4),页面加载时间的性能会受到影响。用户体验缺乏流畅性,并且每次互动都可能导致网页短暂(或长时间)的复位。
  如何避免:快速避免这种情况的一个方法就是,通过测定回发到服务器的内容是否是真正需要的。例如,当不依赖服务器端资源的时候,客户端脚本可用于提供直接结果。你也可以应用AJAX技术或进一步使用单页的应用程序“SPA”方法。流行的JavaScript库/框架,如JQuery、KnockoutJS和AngularJS,能让这些方法的采用变得容易得多。
  做了太多的无用功
  错误:开发人员花了很长的时间来创建web内容。大量的时间花在了重复的任务上,或者自己敲代码写了很多。
  影响:初始网站的发布和后续的更新时间过于冗长。如果其他开发人员也在在做同样的工作,却用了更少的时间和精力,那么你的开发价值显然就低了。手动劳动很容易出现错误,而排除故障错误需要更多的时间。
  如何避免:探索你的选择。在开发的每一个阶段考虑使用新的工具和新的流程技术。例如,你目前使用的代码编辑器相比Sublime Text和Visual Studio,如何?不管你使用的是什么样的代码编辑器,你最近有好好钻研它的功能吗?也许只投入稍稍一点时间去仔细阅读文档,就可以发现做事的新方法,为今后节省一个又一个小时的时间。例如,在这篇文章中,扩展Visual Studio可以为web开发人员提高生产效率。
  不要错过网上可用的帮助工具!例如,检查在dev.modern.ie上的工具以简化测试(跨多个平台和设备)以及排除故障。
  你也可以通过实现流程自动化以减少时间和错误。这方面的例子是使用Grunt工具,例如它的自动化功能可以减小文件(见第4点)。另一个例子是Bower,可以协助管理库/框架(参见第9点)。至于web服务器本身?在例如Microsoft Azure Web Apps的帮助下,你可以快速创建一个网站,几乎所有的开发场景都可以很轻轻松松地规模化到你的业务中!
  通过识别这些常见的错误,web开发人员可以避免很多让其他人饱受煎熬的挫折。我们不仅需要承认错误,还应该清楚错误的影响,并采取措施避免错误,这样才能有更好的开发表现——并有信心完成任务!
  以上就是今天为各位总结的学习要点,而你想做web却自觉学识不够,关注“达内web前端培训”微信公众平台,每日推送你想要的的web前端技能干货,满足你的需要,提升你的web前端技能。
下载前沿客户端关注更多精彩
热点新闻排行榜
| 违法和不良信息举报电话:022- | 举报邮箱:jubao@ |
(C) 2000-.cn, Tianjin ENORTH NETNEWS Co.,LTD.All rights
本网站由天津北方网版权所有web 前端开发 面试注意哪些
本人本科大四,新科系的,马上就要毕业了,现在在找工作,专选课学过web开发技术,所以想找web前端开发的工作,但是javascript不是特别精通,想找web 前端开发 方面的工作会不会难。如果应聘web 前端开发的工作, 面试注意哪些?
其实如果你想要做Web 前端的话,Web前端的要求不是特别的高的话,刚开始对js其实也不用太懂,但是div+css和ps是必须要懂的,js后面可以学,我就是做Web前端的,也毕业两年了,现在js也不是很懂,我也在学js,现在有的公司就专门招div+css的,你可以从这个开始,当你对浏览器兼容问题都基本可以解决了,那再把js搞个精通吧。希望可以帮到你,我现在的水平也就是,看到页面出现的一些问题,都可以解决了,做久一点之后,其实你会发现,当你看到一个不兼容的问题之后,你积累的一定程度了,几分钟的事情就搞定了。
面试的时候不光会问你一些简单的技术性问题,更多的是HR会对你的是整体素质进行评估,下面给你一些技术面试题的参考(转自豆瓣,作者:西北泡面王)1.你的简历中罗列了许多你曾经参与过的项目,你能说说你其中你觉得最好的项目么?你所使用的技术,担任的角色?最让你自豪的是哪一点?★★★提问理由:个人简历中一般都会罗列很多参与过的项目,通过讨论其最自豪的项目可以了解此人的角色、擅长点和自我期望。如果没有项目则至少应该提出学过哪些内容(例如那些自学的或是培训班出来的),否则难以证明此人有足够的经验胜任。2.我们搞技术的人,总是要面临不断学习的问题。请问你最近看的技术类论坛或者牛人博客是什么?有什么推荐的吗?★★提问理由:这是查看应聘者的技术钻研程度,并判定应聘者的关注点。会诱导应聘者回答具体的名称(如果回答CSDN之类的门户网站,则须回答是CSDN具体哪个频道)3.你有博客吗?github账号之类的吗?☆☆提问理由:看重自我表达能力和个人知识积累的前端工程师其实很难找到的。这只是一个加分项。4.你对我们招聘的这个职位,web前端工程师是怎么理解的?你为何会选择这样一个职位?★提问理由:这是一个开放性的问题,只提供给那些简历上个人目标不是很清楚的人。5.你以前用过什么javascript框架和类库吗?各有什么特点?★★★提问理由:考察应聘者技术水平,若是只能说出个jquery只能判定为初级水平。6.你都了解哪些后台动态脚本语言?★★★提问理由:考察应聘者技术水平。同时,也是项目需要。前端开发不能只懂javascript、html和css。7.我们的项目目前是使用git做代码管理的,你有git或者svn的使用经验吗?★★提问理由:现在代码管理的通用工具应有所了解,即使没用过也应该知道。8.用过requirejs或者sea.js吗?如果都用过,能说说它们的异同吗?☆提问理由:考察应聘者技术水平。加分项。9.说说html5添加的新特性中哪些你最瞩目?(若回答的好,可追问:IE对此支持不好,怎么办?)☆提问理由:开放问题。加分项。中间可以诱导对方说除了音频视频以外的特性,如canvas,geolocation ,web socket , web storage,推行语义化、新标签、表单加强等。对于追问问题,期待回答优雅降级,html5shiv, hack, 或者放弃使用html5.10.了解设计模式吗?能说说自己常用的模式是哪一种吗?☆☆提问理由:考察应聘者的技术水平。加分项。虽然事实上大多数时候前端工程师工作的时候不需要考虑这个问题,但是这个问题确实比问什么javascript闭包、prototype之类的强。很多自命为前端工程师的人常常忽视一些理论问题,而这些问题后端工程师通常了解得更透彻,这就是为什么大多数比较牛的前端都是后端开发转行过去的。其实这个问题回答也很简单,不是么?11.怎么防止代码注入攻击?☆提问理由:web开发最常问问题不需赘述。虽然对于前端,大多数时候做好合法性检查就可以了。12.对浏览器兼容性如何处理?若是有项目经验,都需兼容哪些浏览器?★提问理由:前端开发基础技能问题,需要获得肯定的具体的回答。我们的项目不需要兼容IE6,故而轻松不少。考虑到国内360、搜狗等IE壳浏览器大行其道,对IE兼容模式也需要有所理解。13.阐述当前项目的所用主要技术,询问对方是否了解?★☆(前端架构grunt+angularjs+jquery+bootstrap+D3+requirejs,MVVM模式,前后台用json交互,后台只负责提供restful风格API,nodejs, codeigniter)提问理由:加分项。若有了解得多可加分。但一个都不知道也不行(最少json得清楚吧)。14.对美术设计有研究么?当然,不会让你做美工的活。☆提问理由:当年网页设计中分出了“美工”和“切页面的”。但是,“切页面的”有点美术造诣,更便于与UED交流并做出更好的页面。权重较低的加分项。15.因为工作地点是在高校内,所以风气比较自由,我们这里非常鼓励员工提出自己的意见,对员工的未来发展十分看重。你对你未来有怎么样的期许?★提问理由:开放性的问题,主要目的是考察应聘者的自我期待与我方需求是否相符。考虑到这个问题对应聘者有诱导性,所以权重较低
你还没有登录,请先登录或注册慕课网帐号
59959人关注
24916人关注
Copyright (C)
All Rights Reserved | 京ICP备 号-2盘点web前端必知的20道面试题_达内Web培训
400-111-8989
盘点web前端必知的20道面试题
作为大三在校生、大四毕业生、刚入职场的新人,找工作时是否遇到以下困扰:
1、面试官给薪资都有什么标准?
2、面试时最爱问哪些Java题目?
3、如何回答让面试官给到我想要的薪资?
那么今天来讨论一个程序员面试中非常有趣的话题——薪资谈判。这里,达妹向大家总结了20 个非常重要的Java面试技巧,供大家参考。
问题1:Java 中undefined 和not defined 的区别
Java 未声明变量直接使用会抛出异常:var name is not defined,如果没有处理异常,代码就停止运行了。
但是,使用typeof undeclared_variable并不会产生异常,会直接返回 undefined。
// 声明 xconsole.log(x); //output: undefinedconsole.log( typeofy); //output: undefinedconsole.log(z); // 抛出异常: ReferenceError: z is not defined问题2:下面的代码输出什么?vary = 1; if( functionf(){}) { y +=} console.log(y);
正确的答案应该是 1undefined。
Java中if语句求值其实使用eval函数,eval(function f(){}) 返回 function f(){} 也就是 true。
下面我们可以把代码改造下,变成其等效代码。
vark = 1; if( 1) { eval( functionfoo(){}); k +=} console.log(k);
上面的代码输出其实就是 1undefined。为什么那?我们查看下 eval() 说明文档即可获得答案
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。
恰恰 function f(){} 语句的返回值是 undefined,所以一切都说通了。
注意上面代码和以下代码不同。
vark = 1; if( 1) { functionfoo(){}; k +=} console.log(k); // output 1function问题3:在Java中创建一个真正的private方法有什么缺点?
每一个对象都会创建一个private方法的方法,这样很耗费内存
观察下面代码
varEmployee = function(name, company, salary) { this.name = name || ""; pany = company || ""; this.salary = salary || 5000; // Private methodvarincreaseSalary = function() { this.salary = this.salary + 1000; }; // Public methodthis.dispalyIncreasedSalary = function() { increaseSlary(); console.log( this.salary); };}; // Create Employee class objectvaremp1 = newEmployee( "John", "Pluto", 3000); // Create Employee class objectvaremp2 = newEmployee( "Merry", "Pluto", 2000); // Create Employee class objectvaremp3 = newEmployee( "Ren", "Pluto", 2500);
在这里 emp1,emp2,emp3都有一个increaseSalary私有方法的副本。
所以我们除非必要,非常不推荐使用私有方法。
问题4:Java中什么是闭包?写出一个例子
老生常谈的问题了,闭包是在一个函数里声明了另外一个函数,并且这个函数访问了父函数作用域里的变量。
下面给出一个闭包例子,它访问了三个域的变量
它自己作用域的变量
父函数作用域的变量
全局作用域的变量
varglobalVar = "abc"; // Parent self invoking function ( functionouterFunction(outerArg) { // begin of scope outerFunction // Variable declared in outerFunction function scope varouterFuncVar = 'x'; // Closure self-invoking function ( functioninnerFunction(innerArg) { // begin of scope innerFunction // variable declared in innerFunction function scope varinnerFuncVar = "y"; console.log( "outerArg = "+ outerArg + "n"+ "outerFuncVar = "+ outerFuncVar + "n"+ "innerArg = "+ innerArg + "n"+ "innerFuncVar = "+ innerFuncVar + "n"+ "globalVar = "+ globalVar); } // end of scope innerFunction)(5); // Pass 5 as parameter } // end of scope outerFunction )(7); // Pass 7 as parameter innerFunction is closure that is defined inside outerFunc
输出很简单:
outerArg= 7outerFuncVar= x innerArg= 5innerFuncVar= y globalVar= abc 问题5:写一个mul函数,使用方法如下。console.log(mul( 2)( 3)( 4)); // output : 24 console.log(mul( 4)( 3)( 4)); // output : 48
答案直接给出:
functionmul(x){ returnfunction(y){ // anonymous function returnfunction(z){ // anonymous function returnx * y * }; };}
简单说明下: mul 返回一个匿名函数,运行这个匿名函数又返回一个匿名函数,最里面的匿名函数可以访问 x,y,z 进而算出乘积返回即可。
对于Java中的函数一般可以考察如下知识点:
函数是一等公民
函数可以有属性,并且能连接到它的构造方法
函数可以像一个变量一样存在内存中
函数可以当做参数传给其他函数
函数可以返回其他函数
问题6:Java怎么清空数组?
vararrayList = [ 'a', 'b', 'c', 'd', 'e', 'f'];
怎么清空 arrayList
方法1arrayList= [];
直接改变arrayList所指向的对象,原对象并不改变。
方法2arrayList.length = 0;
这种方法通过设置length=0 使原数组清除元素。
方法3arrayList.splice(0, arrayList.length);
和方法2相似
问题7:怎么判断一个object是否是数组(array)?方法1
使用 Object.prototype.toString 来判断是否是数组
functionisArray(obj){ returnObject.prototype.toString.call( obj ) === '[object Array]';}
这里使用call来使 toString 中 this 指向 obj。进而完成判断
使用 原型链 来完成判断
functionisArray(obj){ returnobj.__proto__ === Array.}
基本思想是利用 实例如果是某个构造函数构造出来的那么 它的 __proto__是指向构造函数的 prototype属性。
functionisArray(obj){ return$.isArray(obj)}
JQuery isArray 的实现其实就是方法1
问题8:下面代码输出什么?varoutput = ( function(x){})( 0); console.log(output);
输出是 0。 delete 操作符是将object的属性删去的操作。但是这里的 x 是并不是对象的属性, delete 操作符并不能作用。
问题9:下面代码输出什么?varx = 1; varoutput = ( function(){})(); console.log(output);
输出是 1。delete 操作符是将object的属性删去的操作。但是这里的 x 是并不是对象的属性, delete 操作符并不能作用。
问题10:下面代码输出什么?varx = { foo : 1}; varoutput = ( function(){ deletex. returnx.})(); console.log(output);
输出是 undefined。x虽然是全局变量,但是它是一个object。delete作用在x.foo上,成功的将x.foo删去。所以返回undefined
问题11:下面代码输出什么?varEmployee = { company: 'xyz'} varemp1 = Object.create(Employee); pany console.pany);
输出是 xyz,这里的 emp1 通过 prototype 继承了 Employee的 company。emp1自己并没有company属性。所以delete操作符的作用是无效的。
问题12:什么是undefined x 1 ?
在chrome下执行如下代码,我们就可以看到undefined x 1的身影。
vartrees = [ "redwood", "bay", "cedar", "oak", "maple"]; deletetrees[ 3]; console.log(trees);
当我们使用 delete 操作符删除一个数组中的元素,这个元素的位置就会变成一个占位符。打印出来就是undefined x 1。
注意如果我们使用trees[3] === 'undefined × 1'返回的是 false。因为它仅仅是一种打印表示,并不是值变为undefined x 1。
问题13:下面代码输出什么?vartrees = [ "xyz", "xxxx", "test", "ryan", "apple"]; deletetrees[ 3]; console.log(trees.length);
输出是5。因为delete操作符并不是影响数组的长度。
问题14:下面代码输出什么?varbar = console.log(bar + 0); console.log(bar + "xyz"); console.log(bar + true); console.log(bar + false);
1truexyz21
下面给出一个加法操作表
Number + Number -& 加法
Boolean + Number -& 加法
Boolean + Boolean -& 加法
Number + String -& 连接
String + Boolean -& 连接
String + String -& 连接
问题15:下面代码输出什么? varz = 1, y = z = console.log(y);
输出是 undefined。js中赋值操作结合律是右至左的 ,即从最右边开始计算值赋值给左边的变量。
上面代码等价于
varz = 1z = vary = console.log(y); 问题16:下面代码输出什么?varfoo = functionbar(){ return12; }; typeofbar();
输出是抛出异常,bar is not defined。如果想让代码正常运行,需要这样修改代码:
varbar = function(){ return12; }; typeofbar();
functionbar(){ return12; }; typeofbar();
明确说明这个下问题
varfoo = functionbar(){ // foo is visible here // bar is visible hereconsole.log( typeofbar()); // Work here : )}; // foo is visible here// bar is undefined here问题17:两种函数声明有什么区别?varfoo = function(){ // Some code}; functionbar(){ // Some code};
foo的定义是在运行时。想系统说明这个问题,我们要引入变量提升的这一概念。
我们可以运行下如下代码看看结果。
console.log(foo) console.log(bar) varfoo = function(){ // Some code}; functionbar(){ // Some code};
undefinedfunctionbar(){ // Some code};
为什么那?为什么 foo 打印出来是 undefined,而 bar打印出来却是函数?
Java在执行时,会将变量提升。
所以上面代码Java 引擎在实际执行时按这个顺序执行。
// foo bar的定义位置被提升functionbar(){ // Some code}; console.log(foo) console.log(bar)foo = function(){ // Some code};
原代码的输出合理解释了。
问题18:下面代码输出什么?varsalary = "1000$";( function() { console.log( "Original salary was "+ salary); varsalary = "5000$"; console.log( "My New Salary "+ salary);})();
Original salary was undefinedMy NewSalary 5000$
这题同样考察的是变量提升。等价于以下代码
varsalary = "1000$"; ( function() { console.log( "Original salary was "+ salary); salary = "5000$"; console.log( "My New Salary "+ salary); })(); 问题19:什么是instanceof 操作符?下面代码输出什么?functionfoo(){ } console.log( newfoo() instanceoffoo);
instanceof操作符用来判断是否当前对象是特定类的对象。
functionAnimal(){ //或者不写return语句} vardog = newAnimal();dog instanceofAnimal // Output : true
但是,这里的foo定义为
functionfoo(){ }
// here bar is pointer to function foo(){return foo}.varbar = newfoo();
所以 new foo() instanceof foo 返回 false
问题20: 如果我们使用Java的”关联数组”,我们怎么计算”关联数组”的长度?varcounterArray = { A: 3, B: 4};counterArray[ "C"] = 1;
其实答案很简单,直接计算key的数量就可以了。
Object.keys(counterArray).length // Output 3
面试题参考自: 21 Essential Java Interview Questions | Codementor
本文给出的面试题答案只是很多合理答案中的几个,可能会不全面,欢迎大家补充。
Copyright (C)
All Rights Reserved
选择城市和中心
达内北京亦庄大学生实训基地
达内北京网络营销中心
达内北京会计中心}

我要回帖

更多关于 webservice面试题 的文章

更多推荐

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

点击添加站长微信