黑马程序员技术交流社区

标题: 【西安校区】分享一些前端的面试题 [打印本页]

作者: 逆风TO    时间: 2019-11-5 15:57
标题: 【西安校区】分享一些前端的面试题
1.列举css的几种选择器 以及各种选择器的优先级
标签选择器=1    h1 span p
类选择器=10     .acitive
id选择器=100    #myapp
属性选择器=10    [name="uname"]
内联样式>1000    style="color:#f00"
!important      大于1000  是最高选择器 高于内联样式
标签选择器<类选择器=属性选择器<id选择器

后代选择器  h1 span   
子代选择器  h1>span  
伪类选择器  :hover :link :visited  :active
相邻兄弟选择器  span+span   
通用兄弟选择器  span~span  不一定紧跟着 但是必须有一个共同的父元素
通用选择器    *  很少使用
群组选择器   span,p,h1
结构伪类选择器   :first-child  :nth-child(n)   :last-child

伪元素选择器     :after   :before

内部样式和外部样式 采用就近原则

2.权重计算规则
!important  >1000
内联        =1000
id            =100
类            =10
伪类        =10
元素        =1
*            =0
继承         无

3.阐述清除浮动的几种方式,以及他们的优缺点
   1)非父元素设置高度  但这种情况 有些时候不能精确的计算出父元所需要的高度
   2)父元素也浮动   这又会影响父类元素的同级元素了
   3)父元素写 overflow:hidden  如果父元素需要 溢出显示的话  就不行了
   4)在父元素的后面加空的div元素   设置样式clear:both
4.列举js的几种数据类型
undefined null number string boolean object es7中的 symbol
null是原型链的起点  math没构造方法 没有constructor
5.如何使用原生的js给一个按钮绑定多个onclick事件
    elem.addEventListener("click",handler1);
    elem.addEventListener("click",handler2);
    function handler1(){
        console.log("事件添加!");
    }
    function handler2(){
        console.log("事件添加!");
    }
6.阐述cookies,sessionStorage和localstroage区别

    cookies是用来跟踪浏览器上用户身份的会话方式,Cookie是服务器发给客户端的特殊信息,
    cookie是以文本的方式保存在客户端,单个cookie保存的数据不能超过4kb,
    应用:判断用户是否登陆过网站,以便下次能够实现直接登陆
    sessionStorage和localstroage是html5的新特性

    sessionStorage:将数据保存在session对象中。所谓session,是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session对象可以用来保存在这段时间内所要求保存的任何数据。

    localStorage:将数据保存在客户端本地的硬件设备(通常指硬盘,也可以是其他硬件设备)中,即使浏览器被关闭了,该数据仍然存在,下次打开浏览器访问网站时仍然可以继续使用。

    两者都保存在客户端,不会发送到服务器端
    sessionStorage为临时保存,而localStorage为永久保存
    cookie的存储限制是  4kb  但是 localStorage是 5MB
    cookie每次都随着http请求到服务器端  占带宽和网速

7.编写一个方法去掉数组里面重复的内容
     function qc(arr){
         var obj={};
         for(val of arr){
            obj[val]=val;
         }
         arr=[];
         var i=0;
         for(var val in obj){
            arr[i++]=val;
         }
         return arr;
      }
8.简述get和post的相同点和不同点
  相同点:都可以向服务器发送带参数的请求,HTTP请求底层协议都是TCP/IP,所以两者没有本质的区别
  不同点:GET提交的数据放在URL中,POST则不会。这是最显而易见的差别。这点意味着GET更不安全(POST也不安全,因为HTTP是明文传输抓包就能获取数据内容,要想安全还得加密)
  GET回退浏览器无害,POST会再次提交请求(GET方法回退后浏览器再缓存中拿结果,POST每次都会创建新资源)
  GET提交的数据大小有限制(是因为浏览器对URL的长度有限制,GET本身没有限制),POST没有
  GET可以被保存为书签,POST不可以。这一点也能感受到。
  GET能被缓存,POST不能
  GET只允许ASCII字符,POST没有限制
  GET会保存再浏览器历史记录中,POST不会。这点也能感受到。

9.阐述mvc和mvvm的原理和区别
MVVM即Model-View-ViewModel的简写。即模型-视图-视图模型。模型(Model)指的是后端传递的数据。视图(View)指的是所看到的页面。视图模型(ViewModel)是mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。

  MVC是Model-View- Controller的简写。即模型-视图-控制器。M和V指的意思和MVVM中的M和V意思一样。C即Controller指的是页面业务逻辑。使用MVC的目的就是将M和V的代码分离。MVC是单向通信。也就是View跟Model,必须通过Controller来承上启下。MVC和MVVM的区别并不是VM完全取代了C,只是在MVC的基础上增加了一层VM,只不过是弱化了C的概念,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用,使开发更高效,结构更清晰,增加代码的复用性。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2