招银网络前端一二面面经

1.自我介绍

2.所做的项目哪个更有挑战性,为什么

3.前端框架是react还是vue


4.父子组件通信的方式,除了props还有什么

  1. 通过 props 传递
  2. 通过 $emit 触发自定义事件
  3. 使用 ref
  4. EventBus
  5. $parent 或$root
  6. attrs 与 listeners
  7. Provide 与 Inject
  8. Vuex

5.父子组件的生命周期

父beforeCreate -> 父created -> 父beforeMount -> 子beforeCreate -> 子created -> 子beforeMount -> 子mounted -> 父mounted->父beforeUpdate->子beforeUpdate->子updated->父updated->父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

6.key的作用,如果后端返回的值没有唯一标识,还可以用什么作为key,为什么index不能作为key

(1)当我们在使用v-for时,需要给单元加上key
  • 如果不用key,Vue会采用就地复地原则:最小化element的移动,并且会尝试尽最大程度在同适当的地方对相同类型的element,做patch或者reuse。

  • 如果使用了key,Vue会根据keys的顺序记录element,曾经拥有了key的element如果不再出现的话,会被直接remove或者destoryed
key能够大大减少对页面的DOM操作,提高了diff效率

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。

(2)用组件唯一的id(一般由后端返回)作为它的key,实在没有的情况下,可以在获取到列表的时候通过某种规则为它们创建一个key,并保证这个key在组件整个生命周期中都保持稳定。(网上看的)

(3)因为不管你数组的顺序怎么颠倒,index 都是 0, 1, 2 这样排列,导致 Vue 会复用错误的旧子节点,做很多额外的工作。

7.哪些操作不能做到响应式,比如数组的插入不是响应式,还有什么不是响应式?官方文档里应该有写

由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。
对于对象:
Vue 无法检测 property 的添加或移除。由于 Vue 会在初始化实例时对 property 执行 getter/setter 转化,所以 property 必须在 data 对象上存在才能让 Vue 将它转换为响应式的。
对于已经创建的实例,Vue 不允许动态添加根级别的响应式 property。但是,可以使用 Vue.set(object, propertyName, value) 方法向嵌套对象添加响应式 property。您还可以使用 vm.$set 实例方法,这也是全局 Vue.set 方法的别名
有时你可能需要为已有对象赋值多个新 property,比如使用 Object.assign()_.extend()。但是,这样添加到对象上的新 property 不会触发更新。在这种情况下,你应该用原对象与要混合进去的对象的 property 一起创建一个新的对象。
对于数组:
Vue 不能检测以下数组的变动:
当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如:vm.items.length = newLength

8.元素水平垂直居中的方式

  • 利用定位+margin:auto
  • 利用定位+margin:负值 :父元素为相对定位, 子元素移动自身50%实现水平垂直居中

  • 利用定位+transform:与上面一个一样只是利用transform走自身的50%

    transform: translate(-50%,-50%);
  • table布局:设置父元素为display:table-cell,子元素设置 display: inline-block。利用verticaltext-align可以让所有的行内块级元素水平垂直居中

  • flex布局:

    • display: flex时,表示该容器内部的元素将按照flex进行布局

    • align-items: center表示这些元素将相对于本容器水平居中

    • justify-content: center也是同样的道理垂直居中

  • grid布局:

    display: grid; align-items:center; justify-content: center;


9.输入url到页面渲染的过程

  • URL解析
  • DNS 查询
  • TCP 连接
  • HTTP 请求
  • 响应请求
  • 页面渲染

10.客户端的跨域请求,服务器怎么判断是拒绝服务还是接受请求

浏览器先根据同源策略对前端页面和后台交互地址做匹配,若同源,则直接发送数据请求;若不同源,则发送跨域请求。

服务器解析程序收到浏览器跨域请求后,根据自身配置返回对应文件头。若未配置过任何允许跨域,则文件头里不包含Access-Control-Allow-origin字段,若配置过域名,则返回Access-Control-Allow-origin+ 对应配置规则里的域名的方式。(网上搜的)

11.跨域的解决方式

JSONP CORS Proxy+Nginx

12,缓存机制,强缓存协商缓存具体的判定过程

强缓存:expires、cache-control

协商缓存:last-modified 、E-tag       if-modified-since、if-none-match

补充一个:盒子模型,怪异盒是哪一个浏览器所特有的,ie所有的版本都是怪异盒吗?

标准盒模型下盒子的大小 = content + border + padding + margin
怪异盒模型下盒子的大小=width(content + border + padding) + margin

IE盒模型,它的元素width、height的值的计算方式包含了content、border和padding等属性的数值,也就是说它的基本宽高大小等于 content + padding + border。

W3C标准盒模型,它的元素width,height的计算方式只包含内容了content 这一个属性的数值,不包含 border 和 padding 元素。
ie8开始使用标准盒


13.手撕题:颜色16进制转rgb

没写完就说时间到了,明明我的面试也是迟到了十分钟才开始呜呜呜,让说了下大概思路,怎么验证输入是否合法,让我写了个大概的正则表达式

许愿进个二面 球球了ball ball



许愿成功,补一个二面的面经(有点记不住了)
1.自我介绍
2.echarts同时展示柱状图和折线图怎么做,具体的字段是哪些
3.成绩排名大概是多少
4.场景题,银行卡号-银行,怎么样快速地解析出是哪个银行
我说用map存,他问我数量级,把我问懵了,我就说是银行数量的多倍哈哈哈哈,完全没想到可以就6位数的排列组合的数量级 菜
5.代码题,表格内容列排序,根据输入选择对应的列,再根据关键字desc还是asc升序或者降序
(没调出来 菜菜菜 但是面试官说我思路没问题,许愿一个hr面吧,求求求求)
#招银网络科技面经#
全部评论
还愿还愿
点赞
送花
回复
分享
发布于 2022-09-22 19:51 四川

相关推荐

点赞 16 评论
分享
牛客网
牛客企业服务