zoukankan      html  css  js  c++  java
  • 前端面试题总结:HTML5,JS,CSS3,兼容性。

     

     

    1、 请写出至少20个HTML5标签

    复制代码
    <article><aside>
    <audio><video>
    <canvas><datalist><command> <details><embed>
    <figcaption><figure>
    <footer><header><nav><section>
    <hgroup><keygen>
    <mark><time><summary>
    复制代码

    2、 简述jpg。Gif。png-8.png-24的区别,分别使用场景

      gif、jpg、png格式的图片在网站制作中的区别

      Gif格式特点:
      1.透明性,Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha透明)。
      2.动画,Gif这种格式支持动画。
      3.无损耗性,Gif是一种无损耗的图像格式,这也意味着你可以对gif图片做任何操作也不会使得图像质量产生损耗。
      4.水平扫描,Gif是使用了一种叫作LZW的算法进行压缩的,当压缩gif的过程中,像素是由上到下水平压缩的,这也意味着同等条件下,横向的gif图片比竖向的gif图片更加小。例如500*10的图片比10*500的图片更加小
      5.间隔渐进显示,Gif支持可选择性的间隔渐进显示
      由以上特点看出只有256种颜色的gif图片不适合照片,但它适合对颜色要求不高的图形(比如说图标,图表等),它并不是最优的选择,我们会在后面中看到png是最优的选择。
      Jpeg格式特点:
      1.透明性,它并不支持透明。
      2.动画,它也不支持动画。
      3.损耗性,除了一些比如说旋转(仅仅是90、180、270度旋转),裁切,从标准类型到先进类型,编辑图片的原数据之外,所有其它操作对jpeg图像的处理都会使得它的质量损失。所以我们在编辑过程一般用png作为过渡格式。
      4.隔行渐进显示,它支持隔行渐进显示(但是ie浏览器并不支持这个属性,但是ie会在整个图像信息完全到达的时候显示)。
      由上可以看出Jpeg是最适web上面的摄影图片和数字照相机中。
      Png格式特点:
      1.类型,Png这种图片格式包括了许多子类,但是在实践中大致可以分为256色的png和全色的png,你完成可以用256色的png代替gif,用全色的png代替jpeg
      2.透明性,Png是完全支持alpha透明的(透明,半透明,不透明),尽管有两个怪异的现象在ie6(下面详细讨论)
      3.动画,它不支持动画
      PNG图片格式现在包含三种类型:
      1.PNG8256色PNG的别名
      2.PNG24全色PNG的别名
      3.PNG32全色PNG的别名
      基本上PNG32就是PNG24,但是附带了全alpha通道。就是说每个像素上不仅存储了24位真色彩信息还存储了8位的alpha通道信息,就如同GIF能存储透明和不透明信息一样。当我们把图片放到不太搭配的背景上的时候,透明PNG图片的边缘会显示得更加平滑。
      当然,我也知道你的想法,“但是Photoshop也能生成带透明通道的PNG图片!”我也知道,它只是表面上这么说是PNG24,让我也产生困惑了。
      作为一个伤感的Fireworks倡导者,我只使用PNG32支持附带alpha通道的真色彩图片。不管怎样,如果你习惯使用Photoshop,你就应该知道,Photoshop在“存储为WEB格式”中只提供PNG8和PNG24两种PNG格式。
      我敢肯定你经常会勾选“支持透明”选项,以获得带有透明度的PNG图片,但是这样你就获取了一张PNG32图片。——Photoshop只是觉得把PNG32这个名称给隐藏掉了。奇怪吧?……
      对png8的误解
      Png8的在ie中的怪异表现:
      半透明的png8在ie6以下的浏览器显示为全透明。
      Alpha透明的全色PNG(png32)在ie6中会出现背景颜色(通常是灰色)。
      由上面可以总结:
      (a)全透明的png8可以在任一浏览器正常显示(就像gif一样)。半透明的png8在除了ie6及其以下的浏览器下错误的显示成全透明,其它浏览器都能正常显示半透明。这个bug并不需要特殊对待,因为在不支持半透明的浏览器下只是显示为全透明,对用户体验影响不大,它反而是透明gif的加强版。
      (b)第二个bug没有什么好的方法解决,只能通过影响性能的方法AlphaImageLoader与需要加特殊标签(VML)。
      因此得出结论就是:请使用PNG8。
      Png8的软件问题:
      Photoshop只能导出布尔透明的PNG8。
      Fireworks既能导出布尔透明的PNG8,也能导出alpha透明的PNG8。

    3、 能够设置文本加粗的样式属性是什么

    字体加粗(font-weight)   

    功能:用于设置字体笔划的粗细。   

    属性值:正常度 - normal   

    相对度 - bold, bolder, light, lighter   

    渐变度 - 100, 200, 300, 400(相当于normal), 500, 600, 700(相当于 bold、 lighter、 bolder、以及数值100-900。   

    语法为:h1 {font-weight: 属性值}

    4、 编写一个布局,页面宽度自适应,最小宽度300px,左边定宽35%,右边定宽65%

    复制代码
     1 <div class="container">
     2 <div class="left"></div>
     3 <div class="right"></div>
     4 </div>
     5 
     6 <style>
     7 .container {
     8     height: 600px;
     9     _ 300px;
    10     min- 300px;
    11 }
    12 .left {
    13      35%;
    14     height: 100%;
    15     background: #ff0;
    16     float: left;
    17 }
    18 .right {
    19     overflow: hidden;
    20      65%;
    21     height: 100%;
    22     background: #0f0;
    23 }
    24 </style>
    复制代码

    5、 谈谈对html5的了解

    (1)、良好的移动性,以移动设备为主。

    (2)、响应式设计,以适应自动变化的屏幕尺寸

    (3)、支持离线缓存技术,webStorage本地缓存

    (4)、新增canvas,video,audio等新标签元素。新特殊内容元素:article,footer,header,nav,section等,新的表单控件:calendar,date,time,email,url,search。

    (5)、地理定位...

    (6)、新增webSocket/webWork技术

    6、 Js面向对象的几种方式

    (1)、对象的字面量 var obj = {}

    (2)、创建实例对象 var obj = new Object();

    (3)、构造函数模式 function fn(){} , new fn();

    (4)、工厂模式:用一个函数,通过传递参数返回对象。function fn(params){var obj =new Object();obj.params = params; return obj;},fn(params);

    (5)、原型模式:function clock(hour){} fn.prototype.hour = 0; new clock();

    首先,每个函数都有一个prototype(原型)属性,这个指针指向的就是clock.prototype对象。而这个原型对象在默认的时候有一个属性constructor,指向clock,这个属性可读可写。而当我们在实例化一个对象的时候,实例newClock除了具有构造函数定义的属性和方法外(注意,只是构造函数中的),还有一个指向构造函数的原型的指针,ECMAScript管他叫[[prototype]],这样实例化对象的时候,原型对象的方法并没有在某个具体的实例中,因为原型没有被实例。

    7、前端页面有哪三层构成,分别是什么,作用是什么

    Css: 层叠样式表 ,表现,  由css负责创建。css对“如何显示有关内容”的问题做出了回答。

    Html:超文本标记语言 ,结构,由 HTML 或 xhtml之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P标签表达了这样一种语义:“这是一个文本段。”

    Js: 客户端脚本语言 ,行为, 内容应该如何对事件做出反应。

    8、 如何对网站的文件和资源进行优化

    (1)、文件合并(目的是减少http请求)

    (2)、文件压缩 (目的是直接减少文件下载的体积)

    (3)、使用cdn托管资源

    (4)、使用缓存

    (5)、gizp压缩你的js和css文件

    (6)、meta标签优化(title,description,keywords),heading标签的优化,alt优化

    (7)、反向链接,网站外链接优化。

    9、 JQuery中有几种类型的选择器

    (1)、层叠选择器$(“form input”)
    (2)、基本过滤选择器:first:last:not()
    (3)、内容过滤选择器:odd:eq():animated
    (4)、可视化过滤选择器:hidden:visible
    (5)、属性过滤选择器:div[id]
    (6)、子元素过滤选择器:first-child:last-child:only:child
    (7)、表单元素过滤选择器:enabled:disabled:checked:selected
    (8)、id,类,类型,元素...

    10、说几条javasprit的基本规范

    (1)、不要在同一行声明多个变量。
    (2)、请使用 ===/!==来比较true/false或者数值
    (3)、使用对象字面量替代new Array这种形式
    (4)、不要使用全局函数。
    (5)、Switch语句必须带有default分支
    (6)、函数不应该有时候有返回值,有时候没有返回值。
    (7)、For循环必须使用大括号
    (8)、If语句必须使用大括号
    (9)、for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。

    11、 Html5中本地存储概念是什么,有什么优点

    cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

    cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。

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

    存储大小

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

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

    有期时间

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

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

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

    12、什么是ajax和json,它们的优缺点

    ajax的全称:Asynchronous Javascript And XML。

    异步传输+js+xml。

    所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验。

    (1)创建XMLHttpRequest对象,也就是创建一个异步调用对象

    (2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息

    (3)设置响应HTTP请求状态变化的函数

    (4)发送HTTP请求

    (5)获取异步调用返回的数据

    (6)使用JavaScript和DOM实现局部刷新

    13、 你知道那些针对jQuery的优化方法

    基于Class的选择性的性能相对于Id选择器开销很大,因为需遍历所有DOM元素。

    频繁操作的DOM,先缓存起来再操作。用Jquery的链式调用更好。

    比如:var str=$("a").attr("href");

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

    for 循环每一次循环都查找了数组 (arr) 的.length 属性,在开始循环的时候设置一个变量来存储这个数字,可以让循环跑得更快:

    for (var i = size, length = arr.length; i < length; i++) {}

    14、编写一个方法求一个字符串的字节长度,假设:一个英文字符占用一个字节,一个中文字符占用两个字节

    复制代码
     1 function num(str) {
     2     var num1 = str.length;
     3     var num2 = 0;
     4     for (var i = 0; i < str.length; i++) {
     5         if (str.charCodeAt(i) >= 10000) {
     6             num2++;
     7         }
     8     }
     9     console.log(num1 + num2)
    10 }
    复制代码

    15、简述ECMASCRIPT6的新特性

    1.增加块作用域

    2.增加let const

    3.解构赋值

    4.函数参数扩展 (函数参数可以使用默认值、不定参数以及拓展参数)

    5.增加class类的支持

    6.增加箭头函数

    7.增加模块和模块加载(ES6中开始支持原生模块化啦)

    8.math, number, string, array, object增加新的API

    16、Apply和call方法的异同

    相同点:两个方法产生的作用是完全一样的,第一个参数都是对象;

    不同点:

    call()方法参数将依次传递给借用的方法作参数,即fn.call(thisobj, arg1,arg2,arg3...argn),有n个参数

    apply()方法第一个参数是对象,第二个参数是数组fn.apply(thisobj,arg),此处的arg是一个数组,只有两个参数

     17、 为什么利用多个域名来提供网站资源会更有效?

    (1)、突破浏览器的并发限制(浏览器同一域名最大的并发请求数量为6个,ie6为2个)
    (2)、节约cookie带宽
    (3)、CDN缓存更方便
    (4)、防止不必要的安全问题(尤其是cookie的隔离尤为重要)
    (5)、节约主机域名连接数,优化页面响应速度

    18、身为以为web前端工程师,你肯定知道现在最流行的前端技术吧,有那些?

    Vuejs2.0/Angular2.0/React Native /es6//Nodejs

    http2

    gulp/webpack

    19、 你如何从浏览器的URL中获取参数信息

    浏览器宿主环境中,有一个location对象,同时这个对象也是window对象和document对象的属性。

    location对象中提供了与当前窗口加载的文档有关的的信息,即URL信息。

    如 https://www.baidu.com/api/sousu?search=baidu&id=123#2

    location.href: 完整URL

    location.protocol: 返回协议(https:)

    location.host: 返回服务器名称和端口号(www.baidu.com

    location.hostname: 返回服务器名称(www.baidu.com

    location.port:返回服务器端口号(http默认80,https默认443)

    location.pathname:返回URL中的目录和文件名(api/sousu)

    location.search:返回查询字符串(?search=baidu&id=123#2)

    location.hash:返回hash值(#2)

    20、 请戳出ie6/7下特有的cssbug

    (1)、li边距“无故” 增加

    设置ul的显示形式为*display:inline-block;即可,前面加*是只 针对IE6/IE7有效

    (2)、IE6 不支持min-height属性,但它却认为height就是最小高度

    使用ie6不支持但其余浏览器支持的属性!important。

    (3)、Overflow:

    在IE6/7中,overflow无法正确的隐藏有相对定位position:relative;的子元素。解决方法就是给外包容器.wrap加上position:relative;。

    (4)、border:none 在IE6不起作用: 写成border:0 就可以了,

    (5)、100%高度

    在IE6下,如果要给元素定义100%高度,必须要明确定义它的父级元素的高度,如果你需要给元素定义满屏的高度,就得先给html和body定义 height:100%;。

    (6)、双边距 Bug

    当元素浮动时,IE6会错误的的把浮动方式的margin值双倍计算,给float的元素添加一个display:inline

    (7)、躲猫猫bug

    些定义了:hover的链接,当鼠标移到那些链接上时,在IE6下就会触发躲猫猫。
    1.在(那个未浮动的)内容之后添加一个<span style=”clear: both;”></span>
    2.触发包含了这些链接的容器的hasLayout,一个简单的方法就是给其定义height:1%;

    (8)、IE6 绝对定位的元素1px 间距bug

    当绝对定位的父元素或宽度为奇数时,bottom和right会多出现1px,

    解决方案,针对IE6进行hack处理

    ***如果感觉有一点点收获得话,请帮忙点下推荐!!!

  • 相关阅读:
    poj 3928 树状数组
    poj 2528 线段树+离散化
    poj 3468 成段增减
    hdu 2795 线段树(纵向)
    2016年江西理工大学C语言程序设计竞赛(高级组)
    2016年江西理工大学C语言程序设计竞赛(初级组)
    2015年江西理工大学C语言程序设计竞赛(高级组)
    江西理工大学南昌校区2016年新生赛
    2014江西理工大学C语言程序竞赛高级组
    2014江西理工大学C语言程序竞赛初级组
  • 原文地址:https://www.cnblogs.com/libin-1/p/6525128.html
Copyright © 2011-2022 走看看