腾讯前端一面

3月初,提前批一面的时候,突然电话面试,一脸懵,什么都没准备,时长6分钟,一道题都没回答上来。
4月19号,正式校招面试一面,时长23分钟。回答一般,自认凉了。
5月12号,电面,11号收到的面试通知,时长38分钟,感觉良好。最后问考官这是一面还是二面,告诉我是一面。我:???
5月16号,接到电话,以为是二面,结果是offer!开心到转圈圈!
母上大人说:“人家是撒网捞大鱼,结果混进去个虾米!”
不管!反正找实习告一段落!开始重点搞论文了!

1、ul下有10000个li,要求点击li的时候弹出相应的序号
数量少的话利用for循环设置点击事件
但是这里有10000个,可以利用冒泡进行事件委托,将子元素的点击事件
委托给父元素执行,这样只需要对ul进行添加点击事件
2、登录到第二次请求这个过程发生了什么

(这道题主要是问cookie和session)

当用户登录时(第一次请求不会包含sessionid),服务器程序会为这个客户端的请求创建一个session并且生成一个与此相关联的sessionid,(session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串)

这个sessionid将被在本次响应中返回给客户端保存。保存这个sessionid的方式可以采用cookie

这样在之后的交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为sessionid),如果已包含则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用。如果检索不到,会新建一个。

3、session与cookie的区别?
cookie:

是一个纯文本,不包含任何可执行代码,用来维护用户计算机中的信息。

若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。

若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。

存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。

session

是存在于服务器端的一种数据结构,用来跟踪用户状态,这个数据可以保存在集群、数据库、或者文件中。一般使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

区别
1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端。

(2)cookie的存储限制了数据量,只允许4KB,而session是无限量的

(3)我们可以轻松访问cookie值但是我们无法轻松访问session值,因此它更安全

(4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。

总结:
1、我们在网页上登录某个网页时输入用户名及密码时,如果保存为cookie,则下次我们访问的时候就不需要登录了。
2、如果客户端禁用cookie,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。

    a、一般使用URL重写技术来进行会话跟踪,即每次HTTP交互,都会在URL后面加一个sid=XXX参数,用于服务器端识别用户。
    
    b、还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,
    添加一个隐藏input元素 ,以便在表单提交时能够把session id传递回服务器。比如: 
    <form name="testform" action="/xxx"> 
    <input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
    <input type="text"> 
    </form> 
3、cookie很容易被窃取,所以一般不在cookie中存隐私数据,浏览器中存的密码一般都是加密过的。
如果对于需要安全性高的站点以及控制数据的能力时需要用session效果更佳。
4、谈谈js单线程?

eventLoop了解一下

5、settimeout的时间是准确的吗?

其实还是js执行机制的问题,按同步异步任务来分的话,settimeout是异步任务,它的执行必须满足两个条件:
1、到触发时间了
2、主进程中的同步任务全部处理完,才去处理异步任务

6、http?

协议,http状态码
get和post的区别

7、vue router 实现机制

前端路由的核心之一是页面更新但不重新请求页面。目前在浏览器环境中这一功能的实现主要有2种方式:hash和history interfac。路由mode取值其实还有abstract,用于非浏览器的情况。

hash方式

主要是通过url中的#,在HTML中#是锚点,指向页面中的位置,#后面的数据改变,不会重新请求页面。通过hashchange监听实现更新页面操作。在vue中,hash模式主要是创建hashhistory对象,然后通过调用push和replace来更改路由。

html5中的history interface

它提供了访问浏览器历史记录栈的接口,通过go()/back()/forward()来读取历史记录,通过pushState()replaceState() 修改路由。同时通过监听onpopstate()监听地址变化。

8、谈谈缓存机制?

浏览器缓存一般分为两种:强制缓存和对比缓存。

网上参考:彻底弄懂HTTP缓存机制及原理

强制缓存机制大概是这样的:当请求资源时,先去缓存数据库找,数据没过期就直接用,过期或者找不到就是缓存未命中,就向服务器发请求获取资源。

image

对比缓存:

image

9、load加载过程(不太记得了)

当用户进入或离开页面时,会触发 onload 和 onunload 事件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值