十个前端面试题及答案

前端面试题:

第一道:如何实现盒子边框圆角及阴影效果?

1用border-radius 属性是一个简写属性,用于设置四个 border-*-radius 属性。

提示:该属性允许您为元素添加圆角边框!

可以分开设置,如果四边角度一样就可以省略,直接写角度即可。

2 用box-shadow(sha`dang)是css3的一个新属性,用来实现阴影效果,阴影分为内阴影和外阴影两个效果,可以通过逗号添加多个阴影效果。


<style>

.rect {

border: 1px solid red;

height: 100px;

width: 200px;

border-radius: 10px;

box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.5)

}

</style>

</head>


<body>

<div class="rect"></div>

效果如上:


 

 

 

第二道:

[if !supportLists]· [endif]什么是闭包,闭包的用途是什么?

答案


在函数内部调用函数外部的变量,那这个变量与这个函数称为闭包。

<<script>

function f1() {

var a = 1

function f2() {

console.log(a)

}

return f2

} var result = f1()

result() // 1

</script>



上面的代码中函数f2内部调用了函数外部的变量a,故函数f2与变量a形成了闭包。最后将f2与变量a封装成函数f1,便可以在外部读取到函数f1内声明的变量,避免了污染全局变量。闭包的作用:1)可以读取函数内部声明的变量,避免污染全局变量;2)让函数内声明变量的值一直保存在内存之中。

包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。

所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。


闭包有三个特性:

1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 。3.参数和变量不会被垃圾回收机制回收。


第三道:

请说出至少8个 HTTP 状态码,并描述各状态码的意义。例如:状态码200表示响应成功;

一般情况下:

[if !supportLists]1. [endif]状态码201表示创建成功2.状态码300表示多种选择3.状态码301表示永久移动4.状态码302表示临时移动5.状态码400表示用户请求语法错误6.状态码404表示服务器找不到用户请求的网页7.状态码500表示服务器内部错误,无法完成请求8.状态码502表示服务器未打开

2开头 (请求成功)表示成功处理了请求的状态代码。

3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。(重定向的意思一般就是指换网站了或者说网站没了比如有的网站看着看着就被封了,或者转成广告正经网站不受美利坚保护了。

4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。

5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。5开头码一般不常见,了解一下知道就好了

第四道:

阐述清浮动的几种方式

1.父级div定义 height

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。

优点:简单、代码少、容易掌握

缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题


2.父级div定义 overflow:hidden

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

优点:简单、代码少、浏览器支持好

[if !supportLists]3. [endif]在盒子中增加一个.clearfix::;

原理:添加一个空div,利用css提高的clearfix::清除浮动,让父级div能自动获取到高度

优点:简单、代码少、浏览器支持好、不容易出现怪问题

缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不好

第五道

编写一个方法去掉数组里面重复的内容var arr=[1,2,3,4,5,1,2,3]

一个数组去重的简单实现

<script>

var arr = [1,2,3,4,5,1,2,3]

//定义一个新的数组

var s = [];

//遍历数组

for (var i = 0; i < arr.length; i++) {


if (s.indexOf(arr[i]) == -1) {  //判断在s数组中是否存在,不存在则push到s数组中

s.push(arr[i]);

}

}

console.log(s);//12345

</script>


















第六题undefined和 null 区别


null: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以可以认为它是一个特殊的对象值。


undefined: Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined。


javaScript权威指南: null 和 undefined 都表示“值的空缺”,可以认为undefined是表示系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。


第七题:

讲几种简单布局,例如左边固定宽度右边自由,或者中间固定两边自由宽度。

 float方法(两边固定中间自由伸缩):

通过使两边的div左右浮动,脱离文档流,再为中间的div设置margin-left,margin-right值为左右div的宽度即可.中间的宽度设置为百分百。(缺点时div的排列要把中间的放在最下面)

<body>

<div class="left">我最左边的</div>

<!-- <div class="center">我是中间的</div>错误 -->

<div class="right">我最右边的</div>

<div class="center">我是中间的</div><!--正确-->

</body>













flex方法(中间固定两边自由伸缩)一般用于手机端布局

<style>

.wrap {

display: flex;佛莱克斯

flex-direction: row;/* 让容器内盒子水平显示*/ 刀软可肾

}

.center {

width: 800px;

background: gold;

}

.left,

.right {

/*flex-grow 属性用于平均分享父盒子剩余空间。*/

flex-grow: 1;

height: 30px;

background: red;

}

</style>

</head>

<body>

<div class="wrap">

<div class="left">左边</div>

<div class="center">中间</div>

<div class="right">右边</div>

</div>



第八题

[if !supportLists]1. [endif]jQuery库中的 $() 是什么?


$()函数是 jQuery() 函数的别称,乍一看这很怪异,还使 jQuery 代码晦涩难懂。其实非常好理解。$()函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery 对象上的多个不同方法。甚至可以将一个选择器字符串传入 $() 函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。这个问题我已经见过好几次被提及,尽管它非常基础,它经常被用来区分一个开发人员是否了解 jQuery。





第九题

Js中的事件冒泡和事件委托

1.事件冒泡:


通俗易懂的来讲,就是当一个子元素的事件被触发的时候(如onclick事件),该事件会从事件源(被点击的子元素)开始逐级向上传播,触发父级元素的点击事件。


2.事件委托


事件委托,首先按字面的意思就能看你出来,是将事件交由别人来执行,再联想到上面讲的事件冒泡,就是将子元素的事件通过冒泡的形式交由父元素来执行。


JS事件流原理图如下:画图举例


由此可以知道  1、一个完整的JS事件流是从window开始,最后回到window的一个过程  2、事件流被分为三个阶段(1~5)捕获过程、(5~6)目标过程、(6~10)冒泡过程






第十题

简述ajax的优缺点

  优点:

  1)无刷新更新数据(在不刷新整个页面的情况下维持与服务器通信)

  2)异步与服务器通信(使用异步的方式与服务器通信,不打断用户的操作)

  3)前端和后端负载均衡(将一些后端的工作交给前端,减少服务器的负担)

  4)界面和应用相分离(ajax将界面和应用分离也就是数据与呈现相分离)

  缺点:

  1)ajax不支持浏览器back按钮

  2)安全问题 Aajax暴露了与服务器交互的细节

3)对搜索引擎的支持比较弱



简述原型链

这些原型对象都像链条一样连接在一起,所以我们把这种形式叫做原型链

原型链最主要的作用是继承。只要是在原型链上的属性和方法,这个对象都能用

访问规则:

先看自己对象里有没有,有拿来用,没有找自己的原型,原型有拿来用,没有,再找原型的原型,有拿来用,没有继续找

直到找到null,都还没有,就返回undefined



图解原型链:


 

 

Constructor康死状克特   prototype 普特太仆   

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,375评论 1 45
  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,087评论 2 19
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,567评论 0 7
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,039评论 0 3
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,487评论 0 106