图森未来|前端日常实习|一面
面试题
- 自我介绍✅
- 项目介绍,两个项目都介绍了一遍✅
- 项目拖拽怎么实现的?✅
- 讲解群聊和私聊怎么实现的?✅
- 讲讲 Websocket?✅
- Websock 为什么是长连接的?✅
- 说说心跳续约是什么✅
- 心跳续约的原理?❌
- 怎么判断对方在不在线?❌
- 哪一方判断?客户端还是浏览器?❌
- 场景题:如果自己不用事件监听实现滚动条自动更新到最新位置,应该怎么做?❌
- 说说 rem 与 em 的区别?✅
- 有没有根据不同的设备调整 html 的 font-size?❌
- 登录怎么做的?✅
- 为什么不用Cooke?✅
- 为什么Cooke会增加服务器开销?❌
- 什么是 JWT?✅
- token是怎么生成的?✅
- 非对称加密流程❌ (之前整理过很详细的流程,面试时怎么也想不起来了,紫砂了)
- 非对称加密为什么安全?❌
- 跨域是怎么做的,有没有其他方法?✅
- 讲讲CORS原理?✅
- 其中的响应头、请求头叫什么?✅
- 讲讲反向代理解决跨域的原理?❌
- 说说XSS攻击,如何防御,防御原理?✅❌❌
- 了解过Cookie吗,说一下Cookie的属性?✅
- localstorage 和 sessionstorage 区别?✅❌
- sessionstorage 在多个窗口之间会共享吗?❌
- 什么是深拷贝?和浅拷贝有啥区别?✅
- 说说 Promise 有哪些API?✅
- 说说 Promise.race✅
- Promise输出题,详细说说具体流程?✅
async function async1() { console.log('async1 start'); await async2(); console.log('async1 end'); } async function async2() { console.log('async2'); } console.log('script start'); setTimeout(function() { console.log('setTimeout'); }, 0) async1(); new Promise(function(resolve) { console.log('promise1'); resolve(); }).then(function() { console.log('promise2'); });
- 算法:LRU 缓存✅
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ; 如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。 函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。
反问:
- 公司技术栈?
React 、Vue 都有。
- 对我以后学习有什么意见?
Coding能力还可以,计网的基础知识不够扎实,需要保持刨根问底的心态学习,一些记不牢的知识尝试实现一下。
总结:
面试了近一个半点,面完口干舌燥。
第一次处女面很紧张,面试难度不算特别高,但是表现一般,有时甚至还会出现卡壳现象,丢死人了。
面试官基本就是照着简历里面的项目技术点切入然后展开。
复盘一遍后发现很多问题其实都整理过,但没有深刻理解。每个切入点的前几个问题还能招架住,再深一点就不行了。
自己准备的也欠妥,一直在搞项目胡乱背了几天八股就匆匆上阵了。
投递是个意外,约面算是惊喜,挂了也在意料之中。
这次面试也清楚了自己的实力(就是没有实力),认识到了八股的重要性,需要知其然也要知其所以然。
打算沉淀一段时间再投,希望下次别再像现在这么菜。
#如何判断面试是否凉了##0offer打卡#