美文网首页
前端面试题总结

前端面试题总结

作者: 焚心123 | 来源:发表于2020-05-24 17:09 被阅读0次
1、微信小程序中,一般会问我们如果从A页面,进入B页面,在B页面中修改A页面中的数据,再返回A页面,此时A页面中的数据也会同步的发生改变
2、微信小程序的父子组件的通信

我们一般在微信小程序中可以创建一个component构造器Com文件,在这个创建的构造器或者组件中写入我们需要封装的组件,在需要使用的页面A.json中进行注册

  {
  "usingComponents": {
    "com-c":"../com"
    //组件名com-c,后面是引入的路径
  }
}

在A.wxml中

<com-c ></com-c>//直接写就会出现我们在组件写的数据和布局

父传子

<com-c pageA="{{aa}}"></com-c>
//pageA相当于vue父传子中的绑定自定义属性

在Com.js文件中接受

  // pages/com.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    pageA:{//pageA就是我们在A.wxml文件的组件标签上写的自定义属性名
      type:String,//必须有这个数据类型的验证
      value:''
    }
  },
//在com.wxml页面中直接{{pageA}}就可以渲染数据,也可以在methods中写一个方法,
 methods: {
    aa(){
      this.setData({
        fu:this.data.pageA
      });
    }
  }

子传父
在子组件的方法中通过:

methods:{
  ax(){
      this.triggerEvent('myCom','我是子组件中传递过来的数据');
  }
  }

在A.wxml页面中(父组件中)

  <com-c bind:myCom="ax"></com-c>
//绑定一个自定义事件名要和子组件的事件名要一致,在方法中通过形参接受,形参就是子组件中传递过来的数据
在A.js中
ax(e){console.log(e.detail);//这就是子组件传递过来的数据}
3、URL的连接过程

dns解析、tcp连接、服务器接收数据并返回数据、浏览器接收数据并渲染、tcp连接成功
dns的原理,是怎么进行解析的?
答:网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。
解析顺序:现在浏览器缓存里面找——》没有,就在本地缓存里面找——》没有,路由器缓存里面找——》找到返回数据给客户,并保存到缓存以备下一次的使用。
三次握手:A->B发送确认连接,B收到A发送的请求,并返回给A,A在返回B确认收到了,此时连接成功,为什么是三次而不是两次握手?因为防止失效的连接被服务器接收,从而产生错误。
四次挥手:tcp的连接是双向的,A->B断开连接,B->收到后,进入一种状态,A->B的连接断了,但是B->A的还没断,B->A发送断开连接,A收到并返回给B一个确认应答,此时A会等待2msl,当B收到确认应答后,断开连接。
为什么A要等待2msl时间?因为如果A收到应答后进入状态,如果应答丢失了,B等待超时就会重新发送请求,此时A已经关闭了,不会做出任何响应,那么B就会永远也无法关闭了。

4、消息中间件
5、栅格系统划分多少个? 24个
6、vue组件通信(父子,子父,兄弟,vuex)
7、cdn原理
8、APP性能优化
9、js运行机制
10、跨域,cors原理
11、APP打开多个页面,要跳转会首页,怎么跳转并关闭其他页面?

使用window.location.replace('URL')替换路劲,replace会阻止浏览器前进和后退,在使用window.location.href='URL'跳转

12、使用vuex刷新页面,vuex数据还在不在?

不在,可以使用vue的vuex持久化组件,也可以使用vue高级语法糖mapState等

13、微信小程序Canvas绘图手机适配
14、笔试题
  • 1、js循环机制
    console.log('start');//1
        
    setTimeout(()=>{
        console.log('2');//3
        Promise.resolve().then(()=>{
            console.log(3)//4
        },0)
    })
    new Promise(function(resolve,reject){
        console.log('4');//2
        setTimeout(function(){
            console.log(5);//5
            resolve('6');//成功后返回数据就是下面的res是6
            
        },0)
    }).then(res=>{
        console.log('7');//6
        setTimeout(()=>{
            console.log(res)//7===>res为成功返回的数据就是6
        },0)
    })
输出的答案:start  4  2  3  5  7  6
  • 2、作用域
    var a=1;
    function fn(){
        console.log(a);===》this的指向是window
    }
    function fn1(){
        var a=2;
        fn();
    }
    fn1();//===>1
  • 3、
    var length=10;
    function fn(){
        console.log(this.length);
    }
    var obj={
        length:5,
        method:function(fn){
            this.fn();===>this指向当前的obj
            fn();===》相当于调用上面的函数window.fn()===>10
            arguments[0]();==>arguments调用fn()==>this指向arguments所以长度是4
        },
        fn
    };
    obj.method(fn,1,2,3);
答案为5   10  4
15、你平常遇到哪些兼容性问题?
16、你在项目中出现过什么问题预期,预料之外的,通过什么方式解决的?
17、你对内存泄露,项目的优化?
18、如果给你个全新的项目,一个大型的项目你会考虑哪些东西,能不能自己去把这个框架搭建起来?搭建这个项目的时候,你会先考虑作什么?
19、有没有用webpack搭建过项目?
20、一般首页列表有100条数据,你是怎么优化的?

答:每次请求十条,上拉加载,可以用虚拟列表(就是每次加载十条,将前面加载的十条删除,意思就是首页每次列表的数据只有十条)

21、你们小程序是怎么做登录状态管理的?

答:小程序中有个button按钮,每次点击的时候,里面有个open-type="getuserinfo" 加点击事件bindgetUserInfo="aa",当点击事件的时候,就会获取到用户的基本信息,不过我们要加一个api,wx.getsetting就是用户点击授权登录或者取消的事件,用户取消了,可以返回首页,同意授权,获取基本信息并将有的参数保存到本地,在请求wx.login来获取code值,返回成功后,请求后台登录接口,在进行判断,要是用户没有注册的话就在写一个注册的事件,返回成功时,将token保存到本地,在注册事件里,重新请求we.login事件获取当前最新的code,在调用后台的注册接口数据进行注册,之后再调用登录事件,进行登录。

22、那你们是怎么知道微信小程序的登录态有没有过期呢?
23、怎么实现一个元素在页面上,上下左右就是水平,垂直居中?
24、有没有听过IE盒模型和w3c盒模型?
25、相对定位和绝对定位有什么区别?
26、如果说ABC三个盒子,A包含B,B包含C,然后A设置相对定位,B是普通元素,C是绝对定位,那么C是相对于谁进行绝对定位 ?
27、开发过程中有没有用到页面优化的东西?

答:减少 HTTP 请求数
减少 DNS 查询
使用 CDN
避免重定向
图片懒加载
减少 DOM 元素数量
减少DOM 操作
使用外部 JavaScript 和 CSS
压缩 JavaScript 、 CSS 、字体、图片等
优化 CSS Sprite
使用 iconfont
字体裁剪
多域名分发划分内容到不同域名
尽量减少 iframe 使用
避免图片 src 为空
把样式表放在link 中
把JavaScript放在页面底部

28、图片懒加载?
29、jq的事件委托,说一下原理?
30、你觉得JQ和VUE有什么区别,原理是什么?
31、有没有听过浏览器的同源?什么是同源?
32、前端都遇到过哪些跨域问题?
33、在浏览器中输入一个连接,从你输入这个连接到看到这个页面发生了什么?
34、http和HTTPS的区别?

答:ssl的原理是啥

35、都用过哪些es6的新增属性,都有哪些,说说他们的区别?
36、有没有用过箭头函数?箭头函数和普通函数的区别?
37、get和post有什么区别?
38、js有哪些操作时异步的?
39、js的运行机制(循环机制)?
40、js为什么是单线程?

答:从dom的层面上来讲,dom会改变页面的结构就是页面渲染,但是js也会,js和dom同时操作的话,就会矛盾了,所以他必须是单线程,只能保障同一个时间只能做一件事情,然后就不会发生冲突。

41、怎么把一个数据去重?

相关文章

网友评论

      本文标题:前端面试题总结

      本文链接:https://www.haomeiwen.com/subject/fvuzohtx.html