京东二面 和 字节一面

306 阅读3分钟
只记录一些自己没回答上来的问题

1. position的默认值static

2. 两个面试都问了proxy和defineProperty的区别

  • Proxy使用上比Object.defineProperty方便的多。
  • Proxy代理整个对象,Object.defineProperty只代理对象上的某个属性
  • vue中,Proxy在调用时递归,Object.defineProperty在一开始就全部递归,Proxy性能优于Object.defineProperty。
  • 对象上定义新属性时,Proxy可以监听到,Object.defineProperty监听不到。(Proxy代理对象,defineProperty代理对象属性)
  • 数组新增删除修改时,Proxy可以监听到,Object.defineProperty监听不到。
  • Proxy不兼容IE,Object.defineProperty不兼容IE8及以下。

3. 左右布局(左边固定,右边自适应)当时只答出了两种 主要就是让两个div能并排

  • float + margin
.left {
    float: left;
    width: 200px;
    height: 100%;
    background-color: red;
}
.right {
    margin-left: 200px;
    background-color: blue;
}
  • float + overflow:hidden
.left {
    float: left;
    width: 200px;
    height: 100%;
    background-color: red;
}
.right {
    overflow:hidden;
    background-color: blue;
}
  • CSS3 float + calc
.left {
    float: left;
    width: 200px;
    height: 100%;
    background-color: red;
}
.right {
    float: left;
    width: calc(100% - 200px);
    height: 100%;
    background-color: blue;
}
  • 弹性布局
.parent {
	display: flex;
}
.left {
    width: 200px;
    height: 100%;
    background-color: red;
}
.right {
    display: flex;
    flex: 1;
    height: 100%;
    background-color: blue;
#### }

4.session cookie token的区别(当时太久没看了)

  • Cookie是存储在客户端的

  • Session是存储在服务端的,可以理解为一个状态列表。拥有一个唯一会话标识SessionId。可以根据SessionId在服务端查询到存储的信息。

  • Session会引发一个问题,即后端多台机器时Session共享的问题,解决方案可以使用Spring提供的框架。

  • Token类似一个令牌,无状态的,服务端所需的信息被Base64编码后放到Token中,服务器可以直接解码出其中的数据。

5. 求两个字符串的最长公共子串(这个面试官说很简单的算法题 我只能说 我太菜了)

1、把两个字符串分别以行和列组成一个二维矩阵。

2、比较二维矩阵中每个点对应行列字符中否相等,相等的话值设置为1,否则设置为0。

3、通过查找出值为1的最长对角线就能找到最长公共子串。

image.png
代码就不贴了 根据思路写一写

6. xss注入的代码能有哪些 我当时知道注入script

第一类: <tag on*=*/> 在html标签中触发事件
Example:

1.加载完毕自动触发事件

<body onload="alert('xss')"></body>

2.使html某元素撑满整个页面 

<p onclick="alert('1')" style="postion:fixed;width:100%;heith:100%">&nbsp;</p>

3.增加属性触发事件

 <input onfocus="alert('1')" autofocus/>

第二类: <.tag src=*/>
Example:

1.在iframe标签中加载一个脚本页面

<iframe src="./alert.html"></iframe>

2.在script标签中加载一个脚本

 <script src="./alert.js"></script>

6. css样式优先级 当时记忆有些模糊了 还问了important优先级是否最高

  • 第一优先级:!important会覆盖页面内任何位置的元素样式

  • 1.内联样式,如style="color: green",权值为1000

  • 2.ID选择器,如#app,权值为0100

  • 3.类、伪类、属性选择器,如.foo, :first-child, div[class="foo"],权值为0010

  • 4.标签、伪元素选择器,如div::first-line,权值为0001

  • 5.通配符、子类选择器、兄弟选择器,如*, >, +,权值为0000 (后面出现的!important会覆盖之前出现的!important)

7. 关于项目中粒子动画使用到的requestAnimationFrame(用法 我当时忘了写的时候就那么两行写到但后来又想起来了)

requestAnimationFrame(()=>{requestAnimationFrame()})