文章目录
- 一面
- 浏览器中输入网址,回车,到页面显示出来,中间发生了哪些事情
- 写index.html为什么不把script的标签放在顶部
- css为什么放在header里项目怎么判断用户已经登录,用户的登录信息再哪里携带
- http请求是无状态的,下一次再请求怎么让后端知道我已经登录了
- cookie有内容了,下一次的请求会带上这个信息吗
- cookie和session,cookie的生命周期
- 两边固定宽度,中间自适应
- 设置成flex布局后对哪些css属性会有影响
- 不定宽高的div怎么上下左右居中
- css3的属性
- box-sizing,这个宽是js里的style.width还是dom的offsetwidth
- transform,三个div,把第一个设成transform 200px,其他div的位置会受影响吗吗?
- BFC是什么,怎么触发
- 有一个div,其中子元素设置float:left,那么父元素的高度会变成0,如何清除浮动?现在让父元素的position为absolute,父元素的高度会被撑开么
- 事件捕获和冒泡,在IE和chrome里有什么不一样吗?不想触发冒泡事件,应该怎么做
- 想对每一个列表项都有响应函数,应该怎么做
- js的执行机制
- promise.all() promise.race()
- 浅拷贝和深拷贝,怎么做深拷贝,什么样的对象需要做深拷贝
- in 和hasownproperty() in能取到原型链上的方法吗
- js的异步执行机制,(我从微任务和宏任务这方面回答的)
- 二面
- 总结
一面
浏览器中输入网址,回车,到页面显示出来,中间发生了哪些事情
写index.html为什么不把script的标签放在顶部
css为什么放在header里项目怎么判断用户已经登录,用户的登录信息再哪里携带
一:登录成功后后端返回一个cookie,根据这个cookie的有无来判断;退出登录时删除这个cookie
二:登录成功后,前端设置 cookie,比如’isLogin = true’,根据isLogin的值去判断;退出登录时删除 cookieisLogin 或设置 ‘isLogin = false’。
三:1. 前台发送登录请求2. 后台返回 token,前台得到后台返回的 token,将其写入到 localStorage 中,后续请求中都携带 token 3. 后台判断 token 是否过期,如果过期就对前台的请求响应过期标识或者状态码 4. 前台得到过期标识后,清除 localStorage 中的 token,然后重定向到 login 路由
http请求是无状态的,下一次再请求怎么让后端知道我已经登录了
1、session:为每一次会话建立一个session,HTTP头部携带session的ID,根据ID即可区别每一次会话。
2、 token:也有解释为令牌的意思。为每一次会话创建一个token(标识符,类似ID),同样将token附在HTTP的头部,根据token验证会话。
cookie有内容了,下一次的请求会带上这个信息吗
cookie和session,cookie的生命周期
两边固定宽度,中间自适应
设置成flex布局后对哪些css属性会有影响
不定宽高的div怎么上下左右居中
css3的属性
box-sizing,这个宽是js里的style.width还是dom的offsetwidth
transform,三个div,把第一个设成transform 200px,其他div的位置会受影响吗吗?
BFC是什么,怎么触发
有一个div,其中子元素设置float:left,那么父元素的高度会变成0,如何清除浮动?现在让父元素的position为absolute,父元素的高度会被撑开么
事件捕获和冒泡,在IE和chrome里有什么不一样吗?不想触发冒泡事件,应该怎么做
event.stopPropagation()
preventDefault() 取消默认事件
ie里有个属性是cancel bubble
想对每一个列表项都有响应函数,应该怎么做
js的执行机制
我从预编译过程角度答的,但他可能想问的是事件循环。
事件循环,同步任务按顺序立即执行,异步任务进入宏任务队列或微任务队列发起多个promise请求
promise.all() promise.race()
浅拷贝和深拷贝,怎么做深拷贝,什么样的对象需要做深拷贝
in 和hasownproperty() in能取到原型链上的方法吗
fn()
a=new fn()
a.instanceof(fn) 返回true还是false
instanceof是怎么判定的fn的prototype是指向了Function的,那么a.instanceof(Function)是true还是false?
a.instanceof(fn) ==》true
a.instanceof(Function) ==》true
instanceof运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
同样 in也可以往上找,指定的属性在指定的对象或其原型链中,则in 运算符返回true。
js的异步执行机制,(我从微任务和宏任务这方面回答的)
js是单线程的,这是是由它的用途决定的,作为浏览器脚本语言,它的主要功能是与用户互动以及操作DOM,决定了它只能是单线程。单线程意味着任务需要排队,所有任务只能等上一个任务结束后才能继续执行,如果一个任务的执行事件很长,其他任务就得等着。为了避免堵塞,就把一些任务放到任务队列让别的线程去执行。
二面
问项目,ws底层是tcp还是udp,区别;socket怎么用
超时重传。接收到多个重复消息怎么去重
勉强说了思路,让现场写代码,很自闭
异步执行机制,并行的异步请求
不让写promise,用callback实现。继续自闭
fnA()
fnB()
fnC()
A B是并行的异步请求,得到结果后再执行C这个异步
面试官很好,一直在给我提示,但菜就是菜,我只会写串行的异步。
布局
移动端的页面,底部导航栏,上面自适应
1怎么自适应,多少种方式实现
2点击icon,切换颜色怎么做;让颜色有渐变效果,怎么实现
3三个icon,icon之间的距离和icon距边界距离相同,怎么实现,
我说用margin,就让现场算具体值;说用flex,就让写容器和item的style;说用grid,就问几行几列;说用三个宽度不同的div然后让icon在div里居中,就让算div分别设置多少px;然后每种方法都在挑毛病,结论是我把问题复杂化了,我问简单实现,他不告诉我
总结
一面比较基础,挺八股文的
二面是给具体的场景,考察写代码能力,比较令人自闭。
面试官问我是不是不怎么写代码,我说是,哈哈
总的来说,面试体验挺好。