热门前端面试题

news/2024/7/11 1:31:38 标签: html5, javascript, jquery, css, ajax

一、HTML篇

1.块级元素的显示与隐藏方法,最少3种并说明区别

Display、visibility、opacity
display设置为none,并不占据屏幕的空间,通过visibility和opacity设置隐藏时, 占据了屏幕页面的空间。

2.html的核心属性有哪些,并说明

id:元素的唯一标识、 class:元素的类、 style:元素的行内样式、 title:元素的标题

3.简述CSS的权重

1)是否具有!important声明
2)选择器权重
1000 定义在标签style属性中
100 id选择器
10 类选择器,伪类选择器,属性选择器
1 元素选择器,伪元素选择器
3)选择器权重相同时,后者覆盖前者(就近原则,哪一个样式离标签近,哪一个就生效)

4.简述相对定位和绝对定位的区别

relative元素相对与原本位置的定位,并没有脱离文档流 absolute:给元素设置绝对的定位,脱离文档流
1)设置了absolute的元素,如果有祖先级元素设置了position为relative或absolute,则此时元素定位的对象为祖先级元素
2)设置了absolute的元素,如果没有祖先级设置position,则此时元素相对与body定位,即浏览器视口

5.简述overflow的三种取值,并说明具体含义

auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。 scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
hidden内容会被修剪,并且其余内容是不可见的。

6.简述盒子模型,以及改变盒子模型的属性

Margin(外边距) - 清除边框外的区域,外边距是透明的。 Border(边框) - 围绕在内边距和内容外的边框。
Padding(内边距) - 清除内容周围的区域,内边距是透明的。 Content(内容) - 盒子的内容,显示文本和图像。
通过box-sizing可以改变盒模型

7.尽可能多的描述清除浮动的方式

1)浮动元素的父元素设置高度
2)浮动的父级元素设置overflow:hidden;
3)浮动元素的父元素使用::after{clear:both;content:’’;display:block}
4)在最后一个浮动盒子的下方放置块级元素使用clear:both属性

8.列举最少5个animation的子属性,并说明

animation-name 规定需要绑定到选择器的 keyframe 名称。
animation-duration规定完成动画所花费的时间,以秒或毫秒计。
animation-timing-function 规定动画的速度曲线。
animation-delay 规定在动画开始之前的延迟。
animation-iteration-count 规定动画应该播放的次数。
animation-direction 规定是否应该轮流反向播放动画。

9.简述块级元素和行级元素的区别

块级元素却总是会在新的一行开始排列,各个块级元素独占一行,垂直向下排列。 行内元素和其他行内元素都会在一条水平线上排列,都是在同一行的
块级元素可以设置宽高,并且宽度高度以及外边距,内填充都可随意控制。
行内元素不可以设置宽高,宽度高度随文本内容的变化而变化,但是可以设置行高

10.简述HTTP协议

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,基于 TCP/IP
协议通信协议来传递数据 HTTP协议是无状态的,HTTP 协议自身不对请求和响应之间的通信状态进行保存
Http报文包括请求报文和响应报文两大部分,其中请求报文由请求(request
line)、请求头(header)、空行和请求体四个部分组成。
HTTP常用的请求方法有GET和POST,GET:请求指定的页面信息,并返回实体主体。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。

二、JavaScript篇/jQuery

  1. js五种基本类型:

Undefined、Null、Boolean、Number和String。

  1. = = =和= =和equals

在= = 仅检查值相等,而“===”是一个更严格的等式判定,如果两个变量的值或类型不同,则返回false。
== 是运算符 equals 是方法 方法可以被重写

  1. null和undefined的区别?

undefined代表定义未赋值 null代表定义并赋值了,只是值为null 当我们对两种类型使用 typeof 进行判断的时候,Null
类型化会返回 “object”,这是一个历史遗留的问题。当我们使用双等 号对两种类型的值进行比较时会返回 true,使用三个等号时会返回
false。

  1. 怎么做懒加载?

给页面中img标签设定自定义属性data-original,用来存放真正的img源URL,
给所有img的src属性设定为一张静态图片或者不设置 监听窗口滚动scroll事件,遍历图片计算图片是否出现在浏览器可视窗口内
当图片出现在视窗中时再给他赋予真实的图片地址,这样可以保证首屏的加载速度然后按需加载图片。

  1. 怎么做优化页面

1.删除重复脚本,减少DSN查找

2.html别嵌套太多层,加重页面layout的压力;

3.css选择器的合理运用,减少匹配的计算量;

4.js中别滥用闭包,会加深作用域链,增加变量查找时间;减少http请求之类的等等;

  1. sessionStorage 、localStorage 和 cookie 之间的区别

共同点:用于浏览器端存储的缓存数据
不同点:
(1)、存储内容是否发送到服务器端:当设置了Cookie后,数据会发送到服务器端,造成一定的宽带浪费;
storage,会将数据保存到本地,不会造成宽带浪费;
(2)、数据存储的有效期限不同:cookie只在设置了Cookid过期时间之前一直有效,即使关闭窗口或者浏览器;sessionStorage,仅在关闭浏览器之前有效;localStorage,数据存储永久有效;
(3)、数据存储大小不同:Cookie数据不能超过4K,适用于会话标识;web storage数据 存储可以达到5M;
(4)、作用域不同:cookie和localStorage是在同源同窗口中都是共享的;sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;

7. 闭包类

7.1 闭包是什么,有什么特性,对页面有什么影响

当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返回的这个函数在外部被执行,就产生了闭包。
如果过多使用闭包,容易导致内存泄露 怎么创建闭包 在函数内部嵌套使用函数

7.2 闭包的好处

(1)希望一个变量长期驻扎在内存当中(不被垃圾回收机制回收) (2)避免全局变量的污染 (3)私有成员的存在 (4)安全性提高

7.3 闭包的缺点

可能导致内存占用过多,因为闭包携带了自身的函数作用域 闭包只能取得外部包含函数中得最后一个值

7.4 闭包的使用场景

闭包随处可见,一个Ajax请求的成功回调,一个事件绑定的回调函数,一个setTimeout的延时回调,或者一个函数内部返回另一个匿名函数,这些都是闭包

8.AJAx类

8.1 解释使用js实现AJAX的工作原理。

(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象
(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息 (3)设置响应HTTP请求状态变化的函数
(4)发送HTTP请求 (5)获取异步调用返回的数据 (6)使用JavaScript和DOM实现局部刷新

8.2 同步和异步的区别?

同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。
异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。

8.3 请求ajax的参数详解

url, type, timeout 毫秒 , async 设置请求, baforeSend 发送请求参数 data 发送到服务器的数据
datatype 预期服务器返回的数据类型 error global 是否出发全局ajax事件 success发送的数据讲被转换为对象

8.4 ajax的步骤

1.创建XMLHttpRequest对象,也就是创建一个异步调用的对象。
2.创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息。
3.设置响应HTTP请求状态变化的函数。创建HTTP请求后,就可以将HTTP请求发送给Web服务器了。
4.发送HTTP请求。发送HTTP请求可以使用XMLHttpRequest对象的send()方法。
5.获取异步调用返回的数据。
6.使用javaScript和DOM实现局部刷新。

8.5 如何解决跨域问题?
跨域问题有哪些情况?

1.网络协议不同,如http协议访问https协议。
2.端口不同,如80端口访问8080端口。
3.域名不同,如hahaha.com访问hehehe.com。 解决方法: jsonp动态创建script标签、 iframe、window.name、window.postMessage、服务器上设置代理页面


http://www.niftyadmin.cn/n/1556620.html

相关文章

springboot swagger 整合

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: 1. 接口的文档在线自动生成。 2. 功能测试。 1.添加po…

深入解析JS的宏任务和微任务

1、关于javascript javascript是一门单线程语言,换而言之,在一段时间内,js只会做一件事,只有等这件事做完了,才会去做另外的事。但是任务分大小,分轻重缓急,如何能提高整体的效率是我们要思考的…

JavaScript 创建对象 (构造函数模式、对象字面量模式、工厂模式、原型模式、组合使用构造函数模式与原型模式)

一、构造函数模式 let p new Object(); p.name Tom; p.age 18; p.setName function (name){this.name name } p.setName(Jack); console.log(p.name,p.age);套路:先创建空Object对象,再动态添加属性/方法 适用场景:起始时不确定对象内部…

Java虚拟机(四)--垃圾回收

垃圾回收 java基于内存的动态分配,回收也是自动且动态回收。 因java程序计数器、虚拟机栈、本地方法栈均伴随线程产生而产生,线程销毁而销毁。栈帧的内存基本是类加载后确定的,大多不考虑这部分的内存回收。 而java堆以及方法区不同的是&…

改变函数内this指向的方法

1、call() 写法:fun.call(thisArg,arg1,arg2…) 作用:可以调用函数,还可以改变函数内的this指向 let o {name:andy, } function fn (a,b) {console.log(this);console.log(a b); } fn.call(o,1,2); // call的主要作用可以实现继承 function…

「每日一瞥

用 React Hooks 写异步表单校验React Hooks vs HOC 性能对比探讨Flexbox vs Gridgit-history 把玩一个 React 优化模式用 React Hooks 写异步表单校验 春节期间,React 发布了 16.8 的版本,正式支持了 React Hooks。本文将使用 React Hooks API 通过 100 …

JS数组的常用10种方法详解

1、arr.push() 作用:将一个或多个元素添加到数组的末尾,并返回该数组的新长度。 参数:被添加到数组末尾的元素。 返回值:新的 length 属性值 var sports ["soccer", "baseball"]; var total sports.push(&q…

Bypass_Disable_functions_Shell

Bypass_Disable_functions_Shell https://github.com/l3m0n/Bypass_Disable_functions_Shell 一个各种方式突破Disable_functions达到命令执行的shell 防御 dl,exec,system,passthru,popen,proc_open,pcntl_exec,shell_exec,mail,imap_open,imap_mail,putenv,ini_set,apache_se…