大佬的有赞面经

面经作者:Severu5

链接:https://www.nowcoder.com/discuss/730896

来源:牛客网 (有赞前端)

一面 (8.28 13:00)

  1. 做两道题

  2. 一个数组,判断是否有下标为 i, j, k 的三个数字递增,且 i < j < k

  3. 对象转换,a_k 的键转为 aK,简单来说就是实现深拷贝同时对键做一个替换。

  4. 数据结构了解吗?有哪些可以保持存入和取出的顺序不变的结构?队列、栈、链表清楚吗?有什么表现差异和区别?(这题没太听懂意思,掰扯了好久)

队列,栈,有序链表;队列:先入先出,栈:后入先出,链表:指针? //应该尝试从底层回答,如队列底层,栈的底层,但我忘了

红字问题暂时还不清楚;栈,队列底层均由数组实现,通过push,pop方法实现添加删除。

  1. 图和树什么区别?Web开发中有接触到什么树结构的东西?

树是由链表实现的。。

  1. dom 查找的方法?

document.getElementById getElementsByClassName

还有很多,如querySelector ,xxx.children等,总结了一篇博客

  1. 有哪些选择器?优先级如何?还有别的吗?

. # tagName css中使用权重的方式决定优先级,多个选择器加在一起,# > . > tagName,当权重相同时后面的会覆盖前面

多级判断,先比较是否为行内元素,相同则比较id选择器个数,相同则比较(类选择器,属性选择器,伪类选择器三者总数)相同则比较(标签选择器,伪元素选择器两者总数),四种都相同则后者覆盖前者。

  1. 水平居中和垂直居中的方法?

绝对定位,两者都适用:position:absoluate; top:50%;left:50%;transfrom: (-{50%width},{-50%height});垂直居中:lineHeight与Height相等,水平居中:margin:auto

上面绝对定位应该是transfrom: translate(-50%,-50%);对于文本居中可以用text-align: center;也可使用flex {align-items:center;justify-content:center;}以及grid(grid忘了)

  1. 开发中用过 promise 吗?promise 内部有哪些状态,有什么特征?promise.finally用过吗?promise 有哪些静态方法,分别介绍一下?

pending reject resolve 特征:会从pending转化为reject或resolve且转化后不会改变,then方法内部会默认返回一个promise,因此可以一直.then下去,终结方法为抛出一个pending状态的promise即空白的promise,或者throw newError()

promise.finally:如同名字一样。不管promise最后的状态,在执行完then或catch指定的回调函数以后,都会执行finally方法指定的回调函数。

  1. 开发中用哪个框架多?vue 的实例数据 data 是一个函数,为什么?

保持多个组件的数据独立性,如果不是一个函数而共用一个data对象的话数据就会冲突

  1. 开发中用哪种模块化方式?还有别的了解吗?有什么差别?

nodejs:module.exports — require es6: export—import import 是编译时引入,require是动态(运行时)引入,所以在vue中可以用require方式来实现懒加载

module.exports是CommonJS

  1. 脚手架中 es6 模块编译后在浏览器中是什么样的?

不知道

编译后就是一大段es5的js代码?

  1. http 有哪些状态码?301 302 有什么差异?在浏览器中表现如何?

400:参数错误,401:权限,:404:页面丢失,500: 服务器内部

百度吧

  1. 如何保持登陆状态?有什么差别?如何保证安全?

localstorage/cookie localStorage是永久储存,cookie如果不设置时间只能维持到浏览器结束。可以使用双token模式来保证token不会长时间丢失,

  1. cookie 有什么限制?

没想出来

数量与大小:cookie是http头中的一个字段,虽然HTTP本身对这个字段并没有多少限制,但是Cookie最终还是存储在浏览器里,所有各浏览器都对cookie大小有不同的限制,大部分都是4095个字节,chrome是80000?同时最大数量基本都是50个/每个域名

  1. 一个操作需要发起请求,后端耗时五到十分钟,如何让用户得知请求已完成?(是问请求结束后如何快速得知该操作已完成)

类似上传多个文件接口? 后端应该会给一个进度查询接口

  1. 轮询怎么做?

轮询是什么?

可以用定时器来简单实现,也可以用websocket

  1. http2 和 http 有什么差别?用过 websocket 吗?

计网不会,websocket用过但是忘了。。

整体来说感觉不是很难,面试官会顺着你说的点继续提问。有几个没用过的我都直接说没用过他就换题目了。

二面(同天三点左右)

  1. 自我介绍

  2. 为什么学前端?看你专业和学院是……

  3. 聊实习的难点

  4. 项目

  5. 自己写的 Vue ,实习用的 React ,有遇到什么问题吗?

  6. 用过 axios ,了解它吗?XMLHttpRequest 和 fetch 什么区别?fetch 为什么要多一步转换类型,猜一下?(整了半天也没懂回答对没,有人可以指点一下吗……)

基于XML封装的,fetch分为两步,第一步返回请求是否发送成功(即只有网络错误才会请求发送失败),第二次才会返回具体参数。

更符合关注分离?

  1. coding。用 ws 实例模仿 fetch 请求, ws 实例给了两个方法,一个是send 发送请求,一个是注册响应回调。

ws是啥?

还算轻松,主要是自己讲得比较多,聊的都是实习项目学校之类的。最后的题目面试官提示了好几次才写完……

三面 (同天五点左右)

  1. 聊怎么了解到有赞

  2. 聊为什么学前端

  3. 聊实习工作,学到了什么?有什么遗憾?有什么自己主动引导的工作?

  4. 项目工作,最有成就感的是哪个?再来一次哪里可以做得更好?

  5. 聊自己的优缺点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值