面试题速刷 - 知识广度
- 网页和iframe如何通讯?(听都没听过iframe)---属于HTML中Web Socket内容
iframe是HTML中的一个元素,它允许在一个HTML页面中嵌入另一个HTML页面。下面是对iframe的简要解释:
定义: iframe代表"内联框架"(Inline Frame)。
用途: 它用于在当前网页中嵌入另一个独立的HTML文档。
iframe 核心API:postMessage
,使用它通讯。 要注意跨域的限制和判断。
-
Koa2 洋葱圈模型 (Nodejs)
一定要先搞清楚await async
,nodejs知识了解即可... -
移动端 H5 click有 300ms延迟,如何解决?
FastClick:
现代浏览器的改进:width = device-width
,手机认为已经做了响应式布局
-
网络请求中,token和cookie有什么区别?
cookie跨域不共享、不跨域传递(withCredentials解决)。
不同端口的cookie是隔绝的,共享不了。即使在同一个页面嵌入一个iframe端口不一样,cookie也是取不到的。(默认情况下)
禁止第三方cookie:比如用户A正在访问一个网站a的手机选购页面,这个网站同时有一个京东的广告(就是第三方JS),该网页和京东广告都会对用户信息写入cookie,但是该网页和京东广告的cookie是不能共享的。那么当用户A某天访问京东时,京东广告之前写入的第三方cookie就可以派上用场,读取之前设置的第三方cookie发现之前用户浏览过网站a的手机界面,京东就会给用户推荐手机选购,导致了用户隐私泄露。👇
cookie 和 session:
cokie体积很小的,最大只有4kb,主要是用户ID。Session体积很大,存储在服务器中,Session包含了单个用户的身份信息、权限角色、会话状态等等。
- 登录请求
用户在浏览器上访问网站时,通常会填写用户名和密码,然后点击“登录”按钮提交登录表单。
浏览器将用户的登录信息(如用户名、密码)通过HTTP POST请求发送给服务器。
服务器接收到请求后,验证用户名和密码是否正确(查数据库)。- 创建Session
如果用户名和密码验证通过,服务器将为用户创建一个Session(会话)。Session是服务器在内存或数据库中保存的用户数据,用于在不同请求之间维持用户的状态。它的作用是让服务器能够识别出这是同一个用户。
生成Session ID:服务器为用户生成一个唯一的Session ID。这个Session ID通常是一个随机字符串,具有一定的安全性,难以被猜测。
保存Session数据:服务器将用户的身份信息(如用户ID、权限等)存储在与Session ID关联的会话中。这个会话可以保存在服务器内存中、数据库中,或者通过某些分布式缓存(如Redis)进行管理。- 设置Cookie
接下来,服务器需要让浏览器保存这个Session ID,以便后续请求能够识别出用户是谁。服务器通过HTTP响应头中的Set-Cookie指令,将Session ID发送到浏览器。例如:
Set-Cookie: sessionid=abc123
;
浏览器收到这个响应后,会保存这个Cookie。以后,当浏览器向服务器发出请求时,它会自动在HTTP请求头中带上这个Cookie。- 后续请求中的Session验证
用户登录成功后,浏览器的每次请求都会自动附带上之前保存的Cookie。服务器通过读取这个Cookie中的Session ID来识别用户。
浏览器发送请求:当用户浏览网站的其他页面时,浏览器会自动在每次请求中附带Cookie:
Cookie: sessionid=abc123
服务器验证Session:服务器收到请求后,会检查请求头中的Cookie,找到Session ID(如abc123)。接着,服务器会根据这个Session ID从自己的存储中找到对应的Session数据。
判断用户状态:服务器根据Session数据,判断该用户是否已登录、登录用户的身份、权限等信息,并生成相应的响应。这个过程完全是服务器端的逻辑处理,客户端无法直接访问Session中的数据。- 保持会话状态
在整个登录会话期间,只要浏览器的Cookie没有过期、用户没有主动登出,Session会一直存在,用户的登录状态会持续保持。
Session的生命周期:服务器可以设定Session的有效期。例如,默认设置可能是20分钟,如果用户20分钟内没有任何操作,Session将自动过期。Cookie也可以设置有效期,确保登录状态的持久性。
Session的销毁:当用户点击“登出”按钮时,服务器会删除该用户对应的Session数据,并指示浏览器删除相应的Cookie,确保用户无法再通过这个Cookie访问受保护的页面。
- token vs cookie
cookie自动默认传,token你不加是不会传的。
来个对比:
JWT
Session 和 JWT 哪个更好?
没有好坏之分。只是说适合场景不一样。
Session:
session放在内存中是因为取cookie的速度是有要求的,内存中每个进程有独立的空间,是相互隔离的,对应着每个session也是隔离访问不到的。
JWT:
适用场景:
-
SSO单点登录?
就是我登录了百度,我去访问百度贴吧、百度地图...都登陆了。
基于Cookie实现的!主域名一样cookie可以共享
域名A和域名B把ticket(token)存储在各自的localstorage中,localstorage也是跨域不共享的。
OAuth2.0 了解一下。 -
HTTP协议和UDP协议有什么区别?
HTTP协议在应用层,UDP和TCP协议在传输层,TCP和UDP才有可比性。
TCP:稳定,有连接有断开
UDP:不稳定,无连接无断开,效率高
-
HTTP 1.0和1.1和2.0区别
1.0: 最基础,只支持GET POST方法。
1.1:缓存策略,支持长连接(一次HTTP连接可以收发多次请求),断点续传,状态码206,支持新的方法,可用于Restful API
2.0:可压缩header减少体积,多路复用,一次TCP连接可以多个HTTP并行请求。(之前的优化策略:多个JS或多个CSS拼接成一个文件,现在有了多路复用就可以不用这样了。)服务端推送。 -
HTTPS中间人攻击?如何预防?(问HTTPS加密过程和原理)
HTTP是明文传输。HTTPS先非对称加密,后面对称加密。
黑客有自己的公钥私钥,它在中间掉包公钥传递给客户端。 -
描述从输入url到页面展示的完整过程
- 网络请求
- 解析:字符串->结构化数据
- 渲染:Render Tree 绘制到页面
总结:
-
网页重绘repaint和重排reflow有什么区别?
动态网页随时都会重绘重排。
重绘:
重排:
重排性能消耗更大。
BFC(Block Format Context)块级格式化上下文:内部元素无论如何改动都不会影响其他元素的位置。
-
如何实现网页中多标签tab通讯?
- WebSocket
- localStorage
- SharedWorker(自行去搜搜阮一峰老师文章)
总结:
- 网页和 iframe 之间如何通讯?
iframe通讯的核心API:postMessage
,postMessage(消息,域名)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示