前端第一次面试——千家房产

我算是菜鸟一枚,虽然说前端的东西我都有了解,但是基本都不熟悉,问个原理就懵。
偶然机会投递了千家房产,人资经理说给我个前端面试的机会。我可能真的太菜鸟了,基础的都没回答上来,不过面试一次长长经验,我还是很开心的。

下边是面试官问我的题目:

       答案不全面,望理解。
  • 1.定位的方式:

         静态定位:static(默认情况),每个元素都处于常规文档流中。设置top  bottom left  right  属性不起作用。
         绝对定位:absolute,相对于
         相对定位:relative,相对的是它原来在文档流中的位置。元素原位置的空间
         固定定位:fixed,
         粘性定位:sticky,
    
  • 2.作用域

         作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期,在JS中变量的作用域有全局作用域和局部作用域;
    
  • 3.闭包

         就是能够读取其他函数内部变量的函数。内部作用域可以访问外层作用层。
         特性:
             封闭性,外界无法访问闭包内部的数据,除非闭包主动向外界提供访问接口;
             持久性,一般的函数,调用完毕后,系统自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保存在系统中,闭包中的数据依然存在,从而实现对数据的持久使用。
    
  • 4.object(对象)的声明方式

               字面量声明:
               `var  obj={
                        属性名称:属性值;
                        方法名称:function (){
                                 函数体
                       }
               }`
               利用new Object :
               `var obj=new Object;
                   obj.属性名=属性值;
                   obj.方法名=function () {
                        函数体
                    }`
               构造函数声明对象:
               `function text([参数列表]){
                         this.属性名=属性值;
                         this.方法名=function(){
                               函数体
                               }
                     }`
               原型模式声明:
               `function text(name,age){ 
                        text.prototype.属性名=属性值;
                        text.prototype.方法名=function(){
                              函数体
                              }
                     }  
                 var obj=new text(‘lishi’,20);`
              工厂方式声明对象
              `function  text(name,age){
                       var obj=new Object();
                       obj.name=name;
                       obj,age=age;
                       obj.run=function(){
                           return this.name+this.age;
                        }
                  }
                  var obj=text('lihua',21)`
               混合模式声明:
               `function text(name,age){
                         this.name=name;
                         thia,age=age;
                    }
                    text.prototype.属性名=属性值;
                    text.prototype.方法名=function(){
                          函数体
                      }
                      var obj=new  text('lihua',30)`
    
  • 5.js的对象

           JS中所有的事物都是对象:字符串,数值等。
           js中的内置对象,原生对象,宿主对象。
                  原生对象(本地对象,要new):简单来说就是ECMA-262定义的类。
                  内置对象(不用new,直接调用):由ECMAScript提供实现的,独立于宿主环境的所有对象,在ECMAScript程序开始执行时出现。(已经实例化好的,math,global)
                  宿主对象:由ECMAScript实现的宿主环境提供的对象。(浏览器提供的对象)
    
  • 6.实现异步的原理

        同步(sync):上一个任务执行完,在执行下一个任务,程序的执行顺序和任务的排列顺序是一致的。
        异步(asyc):前一个任务执行完后,不执行下一个任务,而是执行回调函数,后一个任务不等前一个任务结束就执行,程序执行顺序和任务排列顺序是不一致的,异步的。(setTimeout和setInterval函数)
    
  • 7.浏览器渲染页面的过程

       从耗时的角度,浏览器请求,加载,渲染一个页面,时间花在下面五件事上。
             DNS查询
             TCP连接
             HTTP请求及响应
             服务器响应
             客户端渲染(可分为5部分)
                    处理HTML标记并构建DOM树。
                    处理CSS标记并构建CSS规则树。
                    将DOM树与CSS规则树合并成一个渲染树。
                    根据渲染树来布局,以计算每个节点的几何信息。
                    将各个节点绘制到屏幕上
    
  • 8.原型链原理

     任何一个实例,通过原型链,找到它上面的原型,该原型对象中的方法和属性,可以被所有的原型实例共享。
     Object是原型链的顶端。原型可以起到继承的作用。原型的方法都可以被不同的实例共享
    
  • 9.es6的新增方法

      数组:
          forEach():array.forEach(function(currentValue,index,arr)),迭代
          map():同上
          filter():同上,将满足条件的返回到新数组。
          some():同上,检测是否满足条件,返回值为布尔值,若第一个满足就不会继续查找
          every():同上。
      字符串:
             trim(),从一个字符串的两端删除空白字符,返回新字符串。
      对象方法:
              Object.keys(),用于获取对象自身的属性
              Object.defineProperty(obj(目标对象),prop(需定义属性名),descriptor(目标属性拥有的特性{
                  `value:设置属性值,默认underfined
                       writable:值是否可以重写,默认false
                       enumerable:是否枚举,默认false
                       configurable:是否可以被删除/再次修改,默认false`
              }))
    
  • 10.let和const和var

      全局申明的var变量会挂载在window上,而let和const不会
      var声明变量存在变量提升,let和const不会
      let,const的作用域范围是块级作用域,var是函数作用域。
      同一作用域下let和const不能声明同名变量,而var可以。
      同一作用域下在let和const声明前使用变量会存在暂时性死区
      const
              一旦声明必须赋值,不能使用null占位。
              声明后不能再修改。
              如果声明的是复合类型数据,可以修改其属性。
    
  • 11.面向对象三大特性

      封装性:将重复使用的代码,单独封装成一个功能
      继承性:子类继承父类的实例属性和实例方法,不会继承静态属性和静态方法,且静态属性只能通过类名调用。
      多态性:具体表现为方法的重载和方法重写
              重载:不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数
              重写:函数名和参数一样,函数体不同
    
发布了13 篇原创文章 · 获赞 7 · 访问量 4545

猜你喜欢

转载自blog.csdn.net/Bcxbclj/article/details/104819290