HTML、JS常见面试题

Q 1.一个200*200的div在不同分辨率屏幕上下左右居中,用css实现

div {

position:absolute;

width:200px;

height:200px;

top:50%;

left:50%;

margin-left:-50px;

height:-50px;

z-index:1000;

}

Q 2 .  阐述清楚浮动的几种方式(常见问题)


1.父级div定义 height

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

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

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

2.父级div定义 overflow:hidden

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

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

3. 结尾处加空div标签 clear:both

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

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

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

4.父级div定义 伪类:after

Q 3 . 解释css sprites ,如何使用?

CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。

CSS Sprites为一些大型的网站节约了带宽,让提高了用户的加载速度和用户体验,不需要加载更多的图片


Q 4 .  开发过程中遇到的内存泄露情况,如何解决的?

内存泄露的几种情况:

(1)、当页面中元素被移除或替换时,若元素绑定的事件仍没被移除,在IE中不会作出恰当处理,此时要先手工移除事件,不然会存在内存泄露。

btn.onclick = function(){

    btn.onclick =null;

        document.getElementById("myDiv").innerHTML ="Processing...";

    }

(2)、由于是函数内定义函数,并且内部函数--事件回调的引用外暴了,形成了闭包。闭包可以维持函数内局部变量,使其得不到释放。

实例如下:

obj.onclick=function(){

        //Even if it's a empty function    }

    obj=null;

Q 5 . javascript面向对象中继承实现?

面向对象的基本特征有:封闭、继承、多态。

在JavaScript中实现继承的方法:

1. 原型链(prototype chaining)

2. call()/apply()

3. 混合方式(prototype和call()/apply()结合)

4. 对象冒充

Q 6 .请描述一下 cookies sessionStorage和localstorage区别

相同点:都存储在客户端

不同点:1.存储大小

· cookie数据大小不能超过4k。

· sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

2.有效时间

· localStorage    存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;

· sessionStorage  数据在当前浏览器窗口关闭后自动删除。

· cookie          设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

3. 数据与服务器之间的交互方式

· cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端

· sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

Q 7 . document.write和innerHTML的区别:

document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open。每次写完关闭之后重新调用该函数,会导致页面被重写。

innerHTML则是DOM页面元素的一个属性,代表该元素的html内容。你可以精确到某一个具体的元素来进行更改。如果想修改document的内容,则需要修改document.documentElement.innerElement。

innerHTML将内容写入某个DOM节点,不会导致页面全部重绘

innerHTML很多情况下都优于document.write,其原因在于其允许更精确的控制要刷新页面的那一个部分。

Q 8 . AJAX的四个步骤:

第一步,创建xmlhttprequest对象

第二步,使用xmlhttprequest对象的open()和send()方法发送资源请求给服务器

第三步,使用xmlhttprequest对象的responseText或responseXML属性获得服务器的响应。

第四步,onreadystatechange函数,当发送请求到服务器,我们想要服务器响应执行一些功能就需要使用onreadystatechange函数,每次xmlhttprequest对象的readyState发生改变都会触发onreadystatechange函数

Q 9 . xml和json的区别,请用四个词语来形容

·  JSON相对于XML来讲,数据的体积小,传递的速度更快些

·  JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互

·XML对数据描述性比较好;

·  JSON的速度要远远快于XML

Q 10 . 三个盒子,左右定宽,中间自适应有几种方法

<div style="width:100%; margin:0 auto;">

      <div style="width:200px; float:right; background-color:#960">这是右侧的内容 固定宽度</div>

      <div style="width:150px; float:left; background:#6FF">这是左侧的内容 固定宽度</div>

      <div style="margin-left:150px;margin-right:200px; background-color:#9F3">中间内容,自适应宽度</div>

</div>

Q 11 . js基本数据类型(简单数据类型)有哪些, 引用类型

五种基本类型: Undefined、Null、Boolean、Number和String。

引用类型  object、array、function

六种类型:Undefined、null、object、boolean、number、string

Q 12 . null 和 undefined

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

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

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

Q 14 . 什么是mvvm mvc是什么区别 原理

一、MVC(Model-View-Controller)

MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。

MVC使用非常广泛,比如JavaEE中的SSH框架

二、MVVM(Model-View-ViewModel)

如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革。它是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应view。

Q 15 . px和em的区别

px表示像素 (计算机屏幕上的一个点:1px = 1/96in),是绝对单位,不会因为其他元素的尺寸变化而变化;

em表示相对于父元素的字体大小。em是相对单位 ,没有一个固定的度量值,而是由其他元素尺寸来决定的相对值。

Q 16 . 优雅降级和渐进增强

渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。

优雅降级(Graceful Degradation):一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。

其实渐进增强和优雅降级并非什么新概念,只是旧的概念换了一个新的说法。在传统软件开发中,经常会提到向上兼容和向下兼容的概念。渐进增强相当于向上兼容,而优雅降级相当于向下兼容

Q 17 . JS哪些操作会造成内存泄露

1)意外的全局变量引起的内存泄露

2)闭包引起的内存泄露

3)没有清理的DOM元素引用

4)被遗忘的定时器或者回调 5)子元素存在引起的内存泄露

Q 18 .浏览器缓存有哪些,通常缓存有哪几种

http缓存、websql、cookie、localstorage、sessionstorage、flash缓存

19.  css中的小知识点

(1)文本首行缩进:text-index

(2)水平对齐:margin: 0 auto; text-align: center

(3)多行文字垂直居中:

                          父:display:table

                            子:display:table-ceil;vertical-align:middle

(3)鼠标变小手:cursor:pointer

(4)li去点:list-style:none

(5)去下划线:text-decoration:none

(6)background-size:center---能看到图片中心,会被填满

                                        contain---全部都能看到,但是可能填不满

20.  块级元素有哪些? 行级元素有那些?

块级:table、ul、div、li、h1、p、form

行级(内联):a、input、img

21.  转块级元素、转行内元素、转行内块级元素

块:display:block

行:display:inline

行内块:display:inline-block

22.  响应式定位:

(1)写在父类:display:flex

                            flex-wrap:父类如果宽度不够,考虑换行

(2)水平居中:jstify-content:center

                                                      space  between  左右对齐,中间等距

                                                        space around  等距分布

(3)垂直居中:align-items:center

                                                flex-start

                                                flex-end

23.  let 和const的区别:

let与const都是只在声明所在的块级作用域内有效。

let声明的变量可以改变,值和类型都可以改变,没有限制。

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

24.  Ajax请求时,如何解释json数据?

1.直接定义返回数据类型为json,然后请求成功后返回的数据就是json数据,

2.直接使用JSON.parse ()

25.  下面代码输出什么?

var salary = "1000$";

(function () {

    console.log("Original salary was " + salary);

    var salary = "5000$";

    console.log("My New Salary " + salary);

})();

答案:

Original salary was undefined

My New Salary 5000$

26.  下面代码输出什么?

var z = 1, y = z = typeof y;

console.log(y);

答案:

undefined

27.  JavaScript 中undefined和not defined的区别

未声明变量直接使用会抛出异常:var name is not defined,如果没有处理异常,代码就停止运行了。

undefined,不会发生异常

28.  下面的代码输出什么?

var y = 1;

if (function f(){}) {

    y += typeof f;

}

console.log(y);

答案: 1undefined。

29.  JavaScript中什么是闭包?写出一个例子

var func = function () {

            var a=1;

                return function (){

                    a++;

                    console.log(a);

                };

            }

30.  写一个mul函数,使用方法如下。

function mul (x) {

    return function (y) {

        return function (z) {

            return x * y * z;

        };

    };

}

31.  JavaScript怎么清空数组?

1.  arrayList= [];

2.  arrayList.length = 0;

32.  怎么判断一个object是否是数组(array)?

function isArray(obj){

    return Object.prototype.toString.call( obj ) === '[object Array]';

}

33.  下面代码输出什么?

var output = (function(x){

    delete x;

    return x;

})(0);

console.log(output);

答案:0

delete 操作符是将object的属性删去的操作

34.  下面代码输出什么?

var x = { foo : 1};

var output = (function(){

    delete x.foo;

    return x.foo;

})();

console.log(output);

答案:undefine

35.  下面代码输出什么?

var Employee = {

    company: 'xyz'

}

var emp1 = Object.create(Employee);

delete emp1.company

console.log(emp1.company);

输出是 xyz,这里的 emp1 通过 prototype 继承了 Employee的 company。emp1自己并没有company属性。所以delete操作符的作用是无效的。

36.  什么是undefined x 1?

当我们使用 delete 操作符删除一个数组中的元素,这个元素的位置就会变成一个占位符。打印出来就是undefined x 1。

37.  下面代码输出什么?

var trees = ["xyz","xxxx","test","ryan","apple"];

delete trees[3];

console.log(trees.length);

输出是5。因为delete操作符并不是影响数组的长度。

38.  下面代码输出什么?

var bar = true;

console.log(bar + 0);

console.log(bar + "xyz");

console.log(bar + true);

console.log(bar + false);

答案

1

truexyz

2

1

下面给出一个加法操作表

Number + Number -> 加法

Boolean + Number -> 加法

Boolean + Boolean -> 加法

Number + String -> 连接

String + Boolean -> 连接

String + String -> 连接

39.  下面代码输出什么?

var foo = function bar(){ return 12; };

typeof bar();

答案:bar is not defined

40.  html5有哪些新特性、移除了那些元素? 如何处理HTML5新标签的浏览器兼容版问题?

H5新特性:增强了图形渲染、影音、数据存储、多任务处理:绘画 canvas、localStorage、事件监听、 sessionStorage、websocket

移除的元素:<font> 字体标签、 <center> 水平居中、 <u> 下划线、 <big>

解决:document.createElement、最好的方式是直接使用成熟的框架、使用最多的是html5shim框架

41.  介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?

CSS盒子模型:由四个属性组成的外边距(margin)、内边距(padding)、边界(border)、内容区(width和height);

标准的CSS盒子模型和低端IE CSS盒子模型不同:宽高不一样

  标准的css盒子模型宽高就是内容区宽高;

  低端IE css盒子模型宽高 内边距﹢边界﹢内容区;

42. 在设置li标签display:inline-block;属性后,li之间出现空白间隙的原因,有什么解决办法

原因:<li>标签我们在书写的时候为了代码的简洁直观会换行,但是浏览器在解析的时候会把这个换行解析成一个字符。

解决办法:标签不换行、magin负值、让li不闭合

43.  magin 和padding 分别适合什么场景使用

margin:

    需要在border外侧添加空白时;

    空白处不需要背景(色)时;

    上下相连的两个盒子之间的空白,需要相互抵消时。

padding:

    需要在border内测添加空白时;

    空白处需要背景(色)时;

    上下相连的两个盒子之间的空白,希望等于两者之和时。

44.  localStorage的存储数组对象的方式

localStorage存储数据的格式都是以字符串的形式来存储的,

45.  前端解决跨域问题

解决跨域问题常用的解决方案有两个:

JSONP:利用script标签可跨域的特点,在跨域脚本中可以直接回调当前脚本的函数。

CORS:服务器设置HTTP响应头中Access-Control-Allow-Origin值,解除跨域限制。

46.  post和get请求的区别

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数

GET和POST本质上就是TCP链接,但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 GET产生一个TCP数据包;POST产生两个TCP数据包。(并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次)

47.  请求提交的方式有?

post、get、put、delete

48.  ES5和ES6区别

多了let,匿名函数,不适用原型链继承类

49.  浏览器内核有?

四大内核分别是:Trident(也称IE内核)、webkit、Blink、Gecko

50.  Doctype作用

<!Doctype>声明位于文档中的最前面,处于<html>标签之前。告知浏览器的解析器,用什么文档类型规范来解析这个文档。

51.  导入css样式有哪几种

1. 行内式    <span style="color:red;">行内式</span>      写在body标签中

2. 嵌入式    在style标签中写css样式,在body中引用

3. link

4. @import

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

推荐阅读更多精彩内容