zoukankan      html  css  js  c++  java
  • 前端面试题总结

    1、html5的新特性?

      canvas绘画

      用于媒介回放的video和audio元素

      本地离线存储localStorage可以长期存储,并且在浏览器关闭之后可以保存很长一段时间,sesstionStorage在浏览器关闭之后会丢失

      语义化更好的标签,如article、nav、section、footer、header

      表单控件calendar、date、time、email

      新的技术websock、websocket

    2、html标签语义化的理解?

      用正确的标签做正确的事

      html标签语义化可以让页面的内容结构化,让结构更加清晰,便于对浏览器、搜索引擎解析

      即使在没有css样式的情况下,也以一种文档格式显示,易于阅读,易于SEO,易于阅读和维护

    3、html5离线存储

      在用户没有网络连接的时候,可以正常访问站点或应用,在用户有网络连接时,更新用户机器上的缓存文件

      原理:html5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络处于离线状态时,浏览器会通过被离线存储的数据进行页面展示。

      如何使用: 

       3.1、页面头部像下面一样加入一个manifest的属性;

       3.2、在cache.manifest文件的编写离线存储的资源;
          CACHE MANIFEST
          #v0.11
          CACHE:
          js/app.js
          css/style.css
          NETWORK:
          resourse/logo.png
          FALLBACK:
          / /offline.html

       3.3、在离线状态时,操作window.applicationCache进行需求实现。

    浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
    在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
    离线的情况下,浏览器就直接使用离线存储的资源。

    4、css居中

      水平居中

    div{
      width: 200px;
      margin: 0 auto;    
    }

       让绝对定位的div居中

    div{
        position: absolute;
        width: 500px;
        margin: auto;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0
    }

     

       水平垂直居中显示

    1、
    div{
        position: absolute;
        width: 500px;
        height: 300px;
        top: 50%;
        left: 50%;
        margin: -150px 0  0 -250px;
    }
    
    2、
    未知容器的宽高    
    div{
        position:absolute;
        width: 500px;
        heigth:300px;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%)
    }
    3、利用flex布局
    .container{
      display: flex;
      align-items:center;//垂直居中
      justify-content: center;//水平居中
    }
    .container div{
       100px;
      height: 100px;
    }
      

     

     5、ie盒模型和标准盒模型

      

    IE盒模型
    box-sizing: border-box;
     400px;
    盒子width=padding+border+content = 400px
    
    标准盒模型
    box-siziing: content-box
     400px;
    盒子width = padding + border + 400px(content)

     

    6、css优先级确定

      每个选择器都有权值,权值越大越优先,

      继承的样式优先级低于自身指定样式

      !important优先级最高,js也无法修改

      权值相同时,靠近元素的样式优先级高 顺序为内联样式表(标签内部)> 内部样式表(当前文件中)> 外部样式表(外部文件中)

     7、请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?

        浮动float最初出现的意义是为了让文字环绕图片而已,但是人们发现,要让3个块级元素并排显示,给他们加个float会来的比较方便,但是当给3个元素加上float之后,父元素的高度塌陷了,清除浮动是指清除子元素浮动带来父元素高度坍塌的影响。
        清除浮动的两大方法:1.脚底插入clear:both;2.父元素BFC(ie8+)或haslayout(ie6/ie7)
         在父元素的最后加一个冗余元素并为其设置clear:both;必要在页面中添加很多没有意义的冗余元素,太麻烦,而且不符合语义化。
         采用伪元素,这里我们使用:after。添加一个类clearfix:
         使用overflow属性,给父元素添加overflow:hidden ||auto

     8、BFC

      block formatting context 块级格式化上下文,它是页面中的一个独立的渲染区域。只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。

       BFC布局规则:

    1. 内部的Box会在垂直方向,一个接一个地放置。
    2. Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
    3. 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
    4. BFC的区域不会与float box重叠。
    5. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
    6. 计算BFC的高度时,浮动元素也参与计算

      BFC应用

       解决margin叠加。两个div的margin会叠加。比如上下两个div,上面的div设置margin-bottom:10px,下面的div设置margin-top:10px,这个时候两个div的间距是10px,而不是想象中的20px;如果想要两个div的间距为20px,可以对其中一个div通过display:inline-block来触发BFC,这样两个div就不会发生margin重叠了。

      用于布局;

      用于清除浮动,对父元素设置overflow:hidden

    9、如何让chrome支持小于12px的字体

      我们都知道,chrome浏览器支持的最小字体就是12px,无论你对字体设置10px还是8px,页面中显示的还是12px,但是我们可以使用transform:scale()来对字体进行缩放从而达到目的

    10、flex布局的优势?又称圣杯布局

      圣杯布局是一种左中右布局,左右两栏固定宽度,中间内容栏自适应宽度,当pc端屏幕够宽时,会呈现水平三栏布局,当在移动端时,屏幕较小,会呈现垂直的三栏布局;圣杯布局的优势在于只需要写一套代码,就可以同时兼容pc端和移动端。父div display: flex; flex-low: row nowrap;子div flex: 1 6 20%;order:1; 最大放大一倍,最小可以缩小6倍,占据父div的20%,order是子div的顺序

    11、div+css布局较table布局的优缺点?

      div+css布局的符合w3c的标准,代码结构清晰明了,结构、样式和行为分离,带来了足够的维护性,布局精准,网站版面布局修改简单,加快了页面的加载速度,节约站点所占的空间和站点的流量。用只包含结构化内容的html代替嵌套的标签,提高搜索引擎对网页的搜索效率。

      table布局容易上手,可以形成复杂的变化,简单快速,在不同浏览器中有很好的兼容。

    12、img图片标签的alt和title属性的区别

      alt是给搜索引擎识别,在图像无法显示时的替代文本;title是关于元素的注释信息,主要是给用户解读

     13、渐进增强和优雅降级之间的不同?

      渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后在针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

      优雅降级:一开始就构建完整的功能,然后再针对低版本的浏览器进行兼容。

      区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强是一个非常基础,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。

    14、cookie和session的区别?

    • cookie数据存放在客户端的浏览器上,session数据放在服务器上
    • cookie不是很安全,别人可以分析存放在本地的cookie进行cookie欺骗
    • session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能,考虑减轻服务器性能方面,应当使用cookie
    • 单个cookie保存的数据不能超过4k,很多浏览器现在一个站点最多保存20个cookie
    • 将登录信息等重要信息存储在session,其他信息若要保留,放在cookie中

    15、浏览器的cookies、sessionStorage、localStorage的区别?

      共同点:都是保存在浏览器端,并且使同源的 (协议、端口、主机名相同)

      不同点:

      • cookie数据始终在http请求中携带,即在客户端和服务器端间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存
      • 存储大小限制不同。cookie数据不能超过4k,同时每次http请求都会携带cookie,所以cookie只适合保存很小的数据,sessionStorage和localStorage虽然也有储存大小的限制,但是比cookie大的多,可以达到5M或更大
      • 数据有效期不同。sessionStorage仅在当前浏览器关闭之前有效;localStorage始终有效。窗口或者浏览器关闭之后也一直保存,因此作用持久数据。cookie只在设置过期时间之前有效,即使关闭窗口或者浏览器。
      • 作用域不同。sessionStorage在不同的浏览器窗口中不共享,即使同一个页面。localStorage在所有的同源窗口中是共享的,cookie也是。

    16、href和src的区别?

      href表示超文本引用,用在link和a等元素上,用来建立当前元素和文档之间的链接

      src表示引用资源,表示替换当前元素,用在img,script,iframe上,src指向的内容会嵌入到文档中当前标签所在的位置

    17、在css/js代码上线之后开发人员经常会优化性能,从用户刷新网页开始,一次js请求一般情况下有哪些地方会有缓存处理?

      dns缓存、cdn缓存、浏览器缓存 、服务器缓存

    18、css中可以让文字在垂直和水平方向重叠的属性是什么?

      垂直方向:line-height

      水平方向:letter-spacing

    19、normalize.css和reset的css文件的异同?

      相同点:重置样式;保持跨浏览器一致性

      不同点:reset通过为几乎所有的元素施加默认样式,强行是的元素有相同的视觉效果,而normalize.css保持了许多浏览器的默认样式,它会力求这些样式保持一致并尽可能与现代标准符合

    20、html5中的link和@import引入外部css文件的区别?

    • link属于html标签,而@import是css提供的一种方式
    • @import有引入次数的限制,只能引入31次
    • 当页面加载时,link引用的css会同时被加载,而@import引入的css文件会在等待主页面全部加载完成后才会被加载,所有网速较慢时,可能只有页面而没有样式,需要过一段时间才会被加载出来
    • @import只能在IE5以上才能使用识别,而link则没有浏览器版本限制
    • 当使用javascript控制dom去改变样式表里面的样式时,只能用link,dom不能控制@import

    21、doctype的作用?严格模式和混杂模式的区别?

      doctype声明文档的类型,告诉浏览器该文档的类型,让浏览器知道应该用哪个规范来解析文档。

      严格模式又称标准模式,是指浏览器按照w3c标准解析代码

      混杂模式又称怪异模式或兼容模式,是指浏览器按自己的规范解析代码

      HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)

    22、html和xhtml的区别

    • XHTML 元素必须被正确地嵌套
    • XHTML 元素必须被关闭,空标签也必须被关闭,如 <br> 必须写成 <br />
    •  XHTML 标签名必须用小写字母

    • XHTML 文档必须拥有根元素
    • XHTML 文档要求给所有属性赋一个值
    •  XHTML 要求所有的属性必须用引号""括起来
    • XHTML 文档需要把所有 < 、>、& 等特殊符号用编码表示
    • XHTML 图片必须有说明文字
    • XHTML 文档中用id属性代替name属性

    22、前端页面由哪三层构成?作用分别是什么?

      结构层、表示层、行为层

      html实现页面结构,css完成页面的表现与风格,javascript实现客户端的功能与业务

    23、javascript的typeof返回哪些数据类型?

      undefined、string、number、object、Function、boolean、symbol

    24、强制类型转换和隐式转换

      通过String()、Number()、Boolean()函数强制转换

      JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。 console.log(10+'5')//105;console.log(10-'2')//8 number

    25、javascript中spilt()和join()的区别?

      共同点:两个函数通常都是对字符或者字符串的操作

      区别:split()用于分割字符串,返回一个数组

         join()用于连接多个字符或字符串,返回值为一个字符串,默认连接符为逗号

    26、javascript中的pop() push() shift() unshift()?

      push()方法可以在数组的末尾添加一个或多个元素

      pop()方法把数组中的最后一个元素删除

      shift()方法把数组中的第一个元素删除

      unshift()方法在数组的前端添加一个或多个元素

    27、javascript中事件绑定和普通事件的区别?

      普通事件中的onclick是DOM0级事件只支持单个事件,会被其他onclick事件覆盖;而事件绑定中的addEventListener是DOM2级事件,可以添加多个事件而不会被覆盖。

    未完待续...........

     

  • 相关阅读:
    redis-mysql连接池
    Java并发编程原理
    利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件
    Tomcat 启动图解
    JVM
    Java中的Exception
    Java 设计模式六原则及23中常用设计模式
    Jquery15 插件
    Jquery14 工具函数
    Jquery13 Ajax 进阶
  • 原文地址:https://www.cnblogs.com/zengfp/p/9651119.html
Copyright © 2011-2022 走看看