整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

「前端面试」前端面试题300道~~熬夜吐血整理

「前端面试」前端面试题300道~~熬夜吐血整理

生也有涯 而知也无涯 以有涯随无涯 殆已! --庄子

1、手写jsonp的实现

参考自: http://www.qdfuns.com/notes/16738/1b6ad6125747d28592a53a960b44c6f4.html

先说说JSONP是怎么产生的:

其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,着用自己的方式来阐释一下这个问题,看看是否有帮助。

1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准。

2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如script、img、iframe)。

3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理。

4、恰巧我们已经知道有一种叫做JSON的纯字符数据格式可以简洁的描述复杂数据,更妙的是JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据。

5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。

6、客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。

7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

JSONP的客户端具体实现:

1、我们知道,哪怕跨域js文件中的代码(当然指符合web脚本安全策略的),web页面也是可以无条件执行的。

远程服务器remoteserver.com根目录下有个remote.js文件代码如下:


54、实现一个布局:左边固定宽度为200,右边自适应,而且滚动条要自动选择只出现最高的那个

55、画出盒子模型,要使谷歌浏览器的盒子模型显示得跟IE浏览器一致(让谷歌跟ie一致,不是ie跟谷歌一致),该怎么做?

56、手写JS实现类继承,讲原型链原理,并解释new一个对象的过程都发生了什么

57、Array对象自带的方法,一一列举

58、若干个数字,怎么选出最大的五个

59、Array对象自带的排序函数底层是怎么实现的?

60、常用的排序算法有哪些,介绍一下选择排序

61、了解navigator对象吗?

62、手写一个正则表达式,验证邮箱

63、link和@import引入CSS的区别?

64、刚才说有些浏览器不兼容@import,具体指哪些浏览器?

65、介绍一下cookie,localstorage,sessionstorage,session

66、jquery绑定click的方法有几种

67、你的优点/竞争力

68、移动端适配问题

69、react的难点在哪里

70、做过css动画吗

71、如何优化网站

72、以后的规划

73、你做过最困难的事情是啥?

74、css3 html5新特性

75、闭包,ES6,跨域

76、问做过啥项目,用到什么技术,遇到什么困难

77、兼容性

78、盒子模型

79、Array的unshift() method的作用是什么?如何连接两个Array?如何在Array里移除一个元素?

80、用纸笔写一个Closure,任意形式和内容

81、知不知道Array-like Object?

82、如何用Native JavaScript来读写Cookie?

83、知不知道CSS Box-model?

84、如何做一个AJAX Request?

85、Cross-domain access有没有了解?

86、前端安全方面有没有了解?XSS和CSRF如何攻防?

87、HTTP Response的Header里面都有些啥?

88、知不知道HTTP2?

89、输入URL后发生了什么?

90、new operator实际上做了什么?

91、面向对象的属性有哪些?

92、做一个两栏布局,左边fixed width,右边responsive,用纸笔手写

93、讲一下AJAX Request

94、讲一下Cross-domain access

95、介绍一下做过的项目

96、问到了多个服务器怎么弄,架构之类的

97、angular的渲染流程

98、脏检查

99、nodejs的架构、优缺点、回调

100、css 盒模型

101、css 布局,左边定宽右边自适应

102、冒泡和捕获,事件流哪三个阶段?

103、实现事件代理

104、原型链

105、继承的两种方法

106、ajax,原生ajax的四个过程

107、闭包,简单说一个闭包的应用,然后闭包的主要作用是什么

108、css:两个块状元素上下的margin-top和margin-bottom会重叠。啥原因?怎么解决?

109、js:写一个递归。就是每隔5秒调用一个自身,一共100次

110、cookie和session有什么区别

111、网络分层结构

112、你的不足是什么?

113、做了那么多项目,有没有自己的归纳总结

114、工程怎么进行文件管理

115、less和sass掌握程度

116、Cookie 是否会被覆盖,localStorage是否会被覆盖

117、事件代理js实现

118、Css实现动画效果

119、Animation还有哪些其他属性

120、Css实现三列布局

121、Css实现保持长宽比1:1

122、Css实现两个自适应等宽元素中间空10个像素

123、requireJS的原理是什么

124、如何保持登录状态

125、浮动的原理以及如何清除浮动

126、Html的语义化

127、原生js添加class怎么添加,如果本身已经有class了,会不会覆盖,怎么保留?

128、Jsonp的原理。怎么去读取一个script里面的数据?

129、如果页面初始载入的时候把ajax请求返回的数据存在localStorage里面,然后每次调用的时候去localStorage里面取数,是否可行。

130、304是什么意思?有没有方法不请求不经过服务器直接使用缓存

131、http请求头有哪些字段

132、数组去除一个函数。用arr.splice。又问splice返回了什么?应该返回的是去除的元素。

133、js异步的方法(promise,generator,async)

134、Cookie跨域请求能不能带上

135、最近看什么开源项目?

136、commonJS和AMD

137、平时是怎么学习的?

138、为什么要用translate3d?

139、对象中key-value的value怎么再放一个对象?

140、Get和post的区别?

145、Post一个file的时候file放在哪的?

146、说说你对组件的理解

147、组件的html怎么进行管理

148、js的异步加载,promise的三种状态,ES7中的async用过么

149、静态属性怎么继承

150、js原型链的继承

151、jquery和zepto有什么区别

152、angular的双向绑定原理

153、angular和react的认识

154、MVVM是什么

155、移动端是指手机浏览器,还是native,还是hybrid

156、你用了移动端的什么库类和框架?

157、移动端要注意哪些?

158、适配有去考虑么,retina屏幕啊?

159、rem是什么?em是什么?如果上一层就是根root了,em和rem等价么?

160、怎么测试的?会自动化测试么?

161、你觉得你什么技术最擅长?

162、你平时有没有什么技术的沉淀?

163、单向链表怎么查找有没有环?

164、怎么得到一个页面的a标签?

165、怎么在页面里放置一个很简单的图标,不能用img和background-img?

166、正则表达式判断url

167、怎么去除字符串前后的空格

168、实现页面的局部刷新

169、绝对定位与相对定位的区别

170、js轮播实现思路

171、使用js画一个抛物线,抛物线上有个小球随着抛物线运动,有两个按钮能使小球继续运动停止运动

172、java五子棋,说下实现思路

173、如何让各种情况下的div居中(绝对定位的div,垂直居中,水平居中)?

174、display有哪些值?说明他们的作用

175、css定义的权重

176、requirejs实现原理

177、requirejs怎么防止重复加载

178、ES6里头的箭头函数的this对象与其他的有啥区别

179、tcp/udp区别

180、tcp三次握手过程

181、xss与csrf的原理与怎么防范

182、mysql与 MongoDB的区别

183、w3c事件与IE事件的区别

184、有没有上传过些什么npm模块

185、IE与W3C怎么阻止事件的冒泡

186、gulp底层实现原理

187、webpack底层实现原理

188、gulp与webpack区别

189、vuejs与angularjs的区别

190、vuex是用来做什么的

191、说下你知道的响应状态码

192、ajax的过程以及 readyState几个状态的含义

193、你除了前端之外还会些什么?

194、cookie与session的区别

195、一些关于php与java的问题

196、你觉得你哪个项目是你做的最好的

197、说说你在项目中遇到了哪些困难,是怎么解决的

198、前端优化你知道哪些

199、webpack是用来干嘛的

200、webpack与gulp的区别

201、es6与es7了解多少

202、说下你知道的响应状态码

203、看过哪些框架的源码

204、遇到过哪些浏览器兼容性问题

205、清除浮动有哪几种方式,分别说说

206、你知道有哪些跨域方式,分别说说

207、JavaScript有哪几种类型的值

208、使用 new操作符时具体是干了些什么

209、学习前端的方法以及途径

210、怎么实现两个大整数的相乘,说下思路

211、你学过数据结构没,说说你都了解些什么

212、你学过计算机操作系统没,说说你都了解些什么

213、你学过计算机组成原理没,说说你都了解些什么

214、你学过算法没,说说你都了解些什么

215、说下选择排序,冒泡排序的实现思路

216、用过哪些框架

217、让你设计一个前端css框架你怎么做

218、了解哪些设计模式说说看

219、说下你所了解的设计模式的优点

220、vue源码结构

221、状态码

222、浏览器缓存的区别

223、304与200读取缓存的区别

224、http请求头有哪些,说说看你了解哪些

225、js中this的作用

226、js中上下文是什么

227、js有哪些函数能改变上下文

228、你所了解的跨域的方法都说说看你了解的?

229、要是让你自己写一个js框架你会用到哪些设计模式

230、平常在项目中用到过哪些设计模式,说说看

231、一来给了张纸要求写js自定义事件

232、前端跨域的方法

233、call与apply的区别

234、h5有个api能定位你知道是哪个吗?

235、vue与angularjs中双向数据绑定是怎样实现的?

236、webpack怎样配置?

237、nodejs中的文件怎么读写?

238、link和@import有什么区别?

239、cookies,sessionStorage 和 localStorage 的区别

240、看过哪些前端的书?平时是怎么学习的

241、说下你所理解的mvc与mvvc

242、position有哪些值,说下各自的作用

243、写个从几个li中取下标的闭包代码

244、你的职业规划是怎么样的?

245、移动端性能优化

246、lazyload如何实现

247、点透问题

248、前端安全

249、原生js模板引擎

250、repaint和reflow区别

251、requirejs如何避免循环依赖?

252、实现布局:左边一张图片,右边一段文字(不是环绕)

253、window.onload和$(document).ready()的区别,浏览器加载转圈结束时哪个时间点?

254、form表单当前页面无刷新提交 target iframe

255、setTimeout和setInterval区别,如何互相实现?

256、如何避免多重回调—promise,promise简单描述一下,如何在外部进行resolve()

257、margin坍塌?水平方向会不会坍塌?

258、伪类和伪元素区别

259、vue如何实现父子组件通信,以及非父子组件通信

260、数组去重

261、使用flex布局实现三等分,左右两个元素分别贴到左边和右边,垂直居中

262、平时如何学前端的,看了哪些书,关注了哪些公众号

263、实现bind函数

264、数组和链表区别,分别适合什么数据结构

265、对mvc的理解

266、描述一个印象最深的项目,在其中担任的角色,解决什么问题

267、http状态码。。。401和403区别?

268、描述下二分查找

269、为什么选择前端,如何学习的,看了哪些书,《js高级程序设计》和《你不知道的js》有什么区别,看书,看博客,看公众号三者的时间是如何分配的?

270、如何评价BAT?

271、描述下在实习中做过的一个项目,解决了什么问题,在其中担任了什么角色?这个过程存在什么问题,有什么值得改进的地方?

272、如何看待加班,如果有个项目需要连续一个月加班,你怎么看?

273、遇到的压力最大的一件事是什么?如何解决的?

274、平时有什么爱好

275、自身有待改进的地方

276、n长的数组放入n+1个数,不能重复,找出那个缺失的数

277、手里有什么offer

278、你对于第一份工作最看重的三个方面是什么?

279、如何评价现在的前端?

280、用原生js实现复选框选择以及全选非全选功能

281、用4个颜色给一个六面体上色有多少种情况

282、amd和cmd区别

283、为什么选择前端,移动端性能优化

284、vue的特点?双向数据绑定是如何实现的

285、Object.defineProperty

286、算法题:数组去重,去除重复两次以上的元素,代码题:嵌套的ul-li结构,根据input中输入的内容,去除相应的li节点,且如果某个嵌套的ul下面的li都被移除,则该ul的父li节点也要被移除

287、页面加载过程

288、浏览器如何实现图片缓存

以上资料已经好了需要的小伙伴下方卡片获取!

收集了很多编程语录,基本上都跟程序员的生活有关。这些语录涉及软件开发,代码维护,调试纠错,软件bug,系统设计、文档,代码质量,测试和软件开发团队管理等方面。下面的这59条语录虽然很搞笑,但却真实无比。只有程序员才能理解这些编程语句里的真正内涵。闲言少叙,开始吧…

程序员编程语录

1. 一个好的程序员是那种过单行线马路都要往两边看的人。(Doug Linder)

2. 程序有问题时不要担心。如果所有东西都没问题,你就失业了。(软件工程的Mosher定律)

3. 程序员的麻烦在于,你无法弄清他在捣腾什么,当你最终弄明白时,也许已经晚了。(超级计算机之父Seymour Cray)

4. 我想大部分人都知道通常一个程序员会具有的美德。当然了,有三种:懒惰,暴躁,傲慢。(Perl语言发明者Larry Wall)

5. 编程时要保持这种心态:就好象将来要维护你这些代码的人是一位残暴的精神病患者,而且他知道你住在哪。(Martin Golding)

6. 一个人写的烂软件将会给另一个人带来一份全职工作。(Jessica Gaston)

7. 如果建筑工人像程序员写软件那样盖房子,那第一只飞来的啄木鸟就能毁掉人类文明。(Gerald Weinberg)

8. 这世界最有可能毁灭的方式——大多数专家都同意——是次意外。这就是为什么会有我们,我们是计算机专家,我们创造意外。(Nathaniel Borenstein)

9. 我们这个行业有个特别奇怪的现象:不仅我们不从失败里吸取教训,同时也不从成功中学习经验。 (Keith Braithwaite)

10. 一种新技术一旦开始流行,你要么坐上压路机,要么成为铺路石。(Stewart Brand)

11. 如果没能一次成功,那就叫它1.0版吧。(unknown)

12. 所有的程序员都是编剧,所有的计算机都是烂演员。(Anonymous Hack Actor)

13. 工作进度上越早落后,你就会有越充足的时间赶上。(Anonymous Scheduler)

14. 当有这样的一种编程语言出现:它能让程序员用简单的英语编程,你将会发现,程序员都开始不会说英语。(Anonymous Linguist)

15. 为什么我们没有时间把事情做对,却总有时间把事情做过头?(Anonymous)

16. 傻瓜都能写出计算机能理解的程序。优秀的程序员写出的是人类能读懂的代码。

17. 任何你写的代码,超过6个月不去看它,当你再看时,都像是别人写的。(Eagleson’s law)

编程/软件开发语录

1. 按代码行数来评估软件开发的进度,就如同按重量来评估飞机建造的进度。(比尔-盖茨)

2. 软件就像做爱。一次犯错,你需要用余下一生来维护支持。(Michael Sinz)

3. 在水上行走和按需求文档开发软件都很容易——前提是它们都是冻结状态。(Edward V Berard)

4. 最初90%的代码用去了最初90%的开发时间…余下10%的代码用去了另外90%的开发时间。(Tom Cargill)

5. 注释代码很像清洁你的厕所——你不想干,但如果你做了,这绝对会给你和你的客人带来更愉悦的体验。(Ryan Campbell)

6. 如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。(Rick Cook)

7. 软件设计最困难的部分…是阻挡新功能的引入。(Donald Norman)

8. 为了理解递归,我们首先要理解的是递归。(Anonymous)

9. 世上只有两类编程语言:那些拥有被人诟病的和那些没人用的。(Bjarne Stroustrup)

10. The best thing about a boolean is even if you are wrong, you are only off by a bit. (Anonymous)

11. 如果Java能实现真的垃圾回收,那大部分的程序都会在执行时删除自己。(Robert Swell)

12. 理论上,理论和实践是没有差异的。但实践中,是有的。(Jan L. A. van de Snepscheut)

13. 预备,开火,瞄准:这是最快的软件开发方法。预备,瞄准,瞄准,瞄准,瞄准:这是最慢的软件开发方法。(Anonymous)

14. 编程是10%的科学,20%天份,和70%的让这天份符合科学。(Anonymous)

15. 评估一个事情要比去理解你评估了什么容易。(Anonymous)

16. 测评不会撒谎,但测评的人会。(Anonymous)

17. 培养员工,即使他们有跳槽的风险。什么都不做而留他们在公司,这样风险更大。(Anonymous)

18. 计算机科学的目标是做出一个东西,并且保证它至少能坚持到我们将它开发完成。(Anonymous)

19. Java之于JavaScript如同Car之于Carpet。 (Chris Heilmann)

20. 起初就把事情做对是完全没必要的。但最后要把事情做对是绝对必要的。(Andrew Hunt and David Thomas)

21. 数组的起始索引应该从0开始还是从1开始?我的0.5的折中提议被他们未经认真考虑到拒绝了——我认为是这样的。(Stan Kelly-Bootle)

22. 程序必须是为了给人看而写,给机器去执行只是附带任务。 (Abelson / Sussman)

23. 编程可以很有趣,你可以用它做密码学研究,但两者绝对不能合二为一。(Kreitzberg and Shneiderman)

24. 拷贝-粘贴是一种设计错误。(David Parnas)

25. 计算机善于遵循指令,但不善于理解你的思维。(Donald Knuth)

软件纠错语录

1. 删除的代码是没有bug的代码。(Jeff Sickel)

2. 如果纠错是消除软件bug的过程,那编程一定是把它们放进去的过程。(Edsger Dijkstra)

3. 代码纠错要比新编写代码困难一倍。因为,如果你写出了最聪明的代码,按此推算,你将没有更大的智慧来debug它。

4. 想在自己的代码里找出一个错误是十分困难的。而当你认为你的代码没有错误时,那就更难了。(Steve McConnel)

软件bug语录

1. 这不是个bug——这一个未注明的功能特征。(Anonymous)

2. 没有需求或设计,编程就是一种将bug添加到一个空文本文件里的艺术。(Louis Srygley)

3. 烂代码并不烂,只是被误解了。(Anonymous Code Behaviorist)

4. 有两种方法能写出没有错误的程序;但只有第三种好用。(Alan J. Perlis)

5. 小心上面代码中的bug;我只知道这些代码是正确的,但没有试过。(Donald Knuth)

软件产品/成品语录

1. 软件能够复用前,它必须要可用。(Ralph Johnson)

2. 软件通常在beta测试完成不久后发布。Beta在拉丁语中是“还不能用”的意思。(Anonymous)

3. 最好的性能改进是将软件从不能用的状态变成可用。(J. Osterhout)

4. 最廉价、最快速、最可信赖的组件是那些还未出现的组件。(Gordon Bell)

5. I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing. (Oktal)

6. 软件和教堂非常相似——建成之后我们就在祈祷。(Sam Redwine)

7. 除非最后一个用户死掉,软件是不会有完工的时候的。(Anonymous)

8. 如今的大部分软件都非常像埃及金字塔,由成千上万的石块一个摞一个构成,没有结构上的集成,是由暴力强制和成千上万的奴隶完成。(Alan Kay)

博最近超级流行的小讨论,评选男生眼中很火的文艺句子,你们觉得男生说这些话能撩到你吗?

进一步没资格,退一步舍不得。

我看得见风,闻得到雨,唯独听不到一句我爱你。

海的那边,是否还有等待?

冗长的黑夜中,你是我唯一的光。

人间很苦,有你很甜!

心在树上,你摘就是。

暧昧上头的那几秒,真的像极了爱情。

你觉得这些微博最火句子能打动你吗,你最喜欢的表白神句是什么?一起说说吧!

https://qnp.chumanapp.com/ldy/ldy20181101/index.html