面试总结系列(一)------ 国际化中台事业部

国际化中台事业部,三轮技术面+一轮HR面,11.15一面,11.22二面,11.30三面,127HR面,12.9意向
书,1.4offer,base杭州西溪园区一面(65min,P7):
1.项目介绍
2项目技术难点,怎么调研技术方案,怎么从用户层考虑优化方案
3场景题:前端给页面加水印,说说各种编码的特点,说说数字签名的特点

4场景题:实现协同编辑,说说你认为的技术关键点

5js数据类型,怎么区别array和object
6.原型链,es6class怎么设置原型、静态、实列方法
7letconst区别,const声明了数组,还能push元素吗,为什么?
8.说说你经常使用到的array方法,类数组怎么转换为数组,说说你知道的所有方法
9.DOM怎么添加事件
10.cookielocalstorage的区别,哪些情况和设置,请求不会携带cookie11.说说fetch,优缺点?怎么做polvfill
12Vuedata为什么是函数,深拷贝、浅拷贝
13Vue使用nextTick的原因和作用,项目哪些场景用到了nextTick

答案解析

1. 略

2. 略

3.     a主要利用创建div 然后 循环 后 append到页面最后 利用定位 旋转等属性 做成水印特效

        b 编码特点 不太了解

        c 数字签名  https://www.iteye.com/blog/justjavac-1144151  这个文章想到清晰的解释了这问题。

4. 协同编辑 比较好的文章。  关键点(socket通信 Quill编辑器 ot记录操作 处理中文输入 保存作者等等) 具体可以看下面的文章  从零开始设计一个Web端多人协同编辑器 - 知乎

5. 这种题 第一反应 typeof 肯定不行 返回的都是object

    js其他2种  A. Object.prototype.toString.call()  B.instanceof  C.Array.isArray

const arr = [6,6,6]
const obj = {sex:1}
Array.isArray(arr) // true
Array.isArray(obj) // false


const arr = [7,7,7]
const obj = {sex: 2}
Object.prototype.toString.call(obj)==="[object Array]" // false
Object.prototype.toString.call(arr)==="[object Array]" // true


const arr = [8,8,8]
const obj = {sex: 2}
arr instanceof Array // true
obj instanceof Array // false


const arr = [8,8,8]
const obj = {sex: 2}
Array.prototype.isPrototypeOf(arr) // true
Array.prototype.isPrototypeOf(obj) // false

6. 比较清晰的2个文章。

https://segmentfault.com/a/1190000010275040

es6中class类的静态方法、实例方法、实例属性、(静态属性) - 古墩古墩 - 博客园

7.

let与const都是只在声明所在的块级作用域内有效。

let声明的变量可以改变,值和类型都可以改变,没有限制。

const 声明的变量 只要不改变内存地址,就可以修改内容, push是可以的,通过索引改变值也是可以的, 因为没有改变指向地址,但是赋值是不行的,

8. 数组的方法 https://www.runoob.com/jsref/jsref-push.html

    类数组:

    A.概念:

  • 拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
  • 不具有数组所具有的方法

    B.例子: var a = {'1':'a','2':'b','4':'c',length:4};

    C.类数组转成数组:

var toArray = function(s){  
    try{  
        // 方法1
        return Array.prototype.slice.call(s);  
        // 方法2 
        // return Array.prototype.splice.call(s,0);  
    } catch(e){  
        // 方法3
        var arr = [];  
        for(var i = 0,len = s.length; i < len; i++){   
           arr[i] = s[i]; 
        }  
        return arr;  
    }     
}

js类数组转数组的方法 - 简书 

js类数组转数组的方法(ArrayLike) - gq_orange - 博客园 

3 参考文章中多看了个 isFinit 方法   JavaScript isFinite() 函数 | 菜鸟教程

isFinite() 函数用于检查其参数是否是无穷大,也可以理解为是否为一个有限数值(finite number)。

提示: 如果参数是 NaN,正无穷大或者负无穷大,会返回 false,其他返回 true。

9. addeventlistener和on 吧 感觉问的不会那么简单 这里 就说一下 这2个添加事件的区别吧

on 当多次绑定的时候 后面的会覆盖前面的

addeventlistener 可以实现多次绑定依次执行

10.  cookie 是html4 时代的东西  每次请求都会自动带上 大小4k 可操作 可禁止操作 生命周期如果不设置就是网页打开和关闭 如设置 可保存到硬盘 操作 麻烦 存储的都是字符串 切每次要自己进行切割啥的  很费劲(之前写的如何操作cookie) 等等  上文章链接 读一下 学习即可 cookies、sessionStorage和localStorage解释及区别 - pengc - 博客园

如何操作 可以不携带cookie 就是设置   默认的ajax 是不带cookie的 

想带cookie 这么设置。

$.ajax({
    url: 'www.baidu.com',
    type: 'post',
    data: '',
    //  默认情况下,标准的跨域请求是不会发送cookie的
    xhrFields: {
      withCredentials: true
    },
    success: (rs) {
    }
  })

网上的文章都是不带cookie。然后想携带cookie 然后各显神通 这个问题是不携带 很奇怪 发一个 处理不带cookie的文章链接 前台请求不带cookie的问题解决方案大汇总_u013282737的博客-优快云博客_请求头没有cookie

11.  优缺点 链接。fetch和axios的优缺点_维多利亚少年-的博客-优快云博客_fetch和axios

如何polyfill 看这篇  讲的不要太好 fetch使用的常见问题及解决办法 - wonyun - 博客园

12.data是函数的目的是为了隔离 各个页面的data 控制作用域 防止变成全局被复用 被影响

  深拷贝和前拷贝。js浅拷贝与深拷贝的区别和实现方式 - 简书     

13. 上2个文章 

​​​​​​https://segmentfault.com/a/1190000012861862

vue.nextTick有什么用途 - 知乎

我在项目中的使用场景   其实nexttick作用就是页面渲染完做点什么。比如 隐藏的显示后 要做什么

比如我的项目 视频源切换后 的自动播放。比如 一个文章的滚动列表  进到第3个文章 右侧的 列表要渲染完 定位到第三个 再比如做一个2个人的聊天页面 页面要一直滚动到某个位置 都是在dom渲染完后 在去定位到某个位置的

上图就是我说的 那个场景。还有更多场景 记不住了 比如app更新滚动条走到100后 进行页面修改等等

整个文章就算是答完了 希望可以帮助更多的人

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值