文件名称:
2019互联网面试题第2季 (2).pdf
开发工具:
文件大小: 18mb
下载次数: 0
上传时间: 2019-09-07
详细说明:2019互联网面试题第2季 各类互联网大厂面试题及解答较快的 String builder
3.总结一下
String:适用于少量的字符串操作的情况
String builder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
22 ArrayList和 Linked List在性能上优缺点
221List接囗
java.util
类 Arraylist
java. lang Object
javautil. Abstractcollection
java,util. Abstractlistse>
javautil. ArrayList
所有已实现的接口:
Serializable, Cloneable, Iterable, Collection, List, RandomAcces
直接已知子类:
Attribute List, RoleList, RoleUnresolvedList
public class ArrayList
extends abstractlist
implements List, RandomAccess, Cloneable, Serializable
https:blog
java util
类 Linkedlist
java. lang Object
java util. Abstractcollection
java,ut1, bstractL; javautil的类
Gava util. AbstractsequentialList
java util. LinkedList
类型参数:
E-在此 collection中保持的元素的类型
所有已实现的接口:
Serializable, Cloneable, Iterable, Collection, Deque, List, Queu
public class LinkedList
extends AbstractsequentialList
implements List, Deque, Cloneable, Serializable
23s0n和 cookie有什么区别和联系
session和coke的区别
存放位置: session保存在服务器, cookie保存在客户端
存放的形式: session是以对象的形式保存在服务器, cookie以字符串的形式保存在客户端
用途: session适合做客户的身份验证, cookie适合保存用户的个人设置,爱好等
路径: sessIon不能区分路径,同一用户在访问一个网站期间,所有的 session在任何一个地
方都可以访问到 cookie中如果设置了参数路径,那么同一个网站下的cook互相访问不到
安全性 cookie不是很安全,别人可以分析存放在本地的 cookie并进行 cookie欺骗, session
较 cookie更安全一些
大小及数量限制:单个coke在客户端的限制是3K,就是说一个站点在客户端存放的
COOKIE不能3K。不同浏览器所含 cookie的最大个数不同,一般30到50个;一般认为
session没有大小限制。
session和 cookie的联系
session需要借助 cookie才能正常工作,如果客户端完全禁止 cookie, session将失效,因为
session是由应用服务器维持的一个服务端的存储空间,用户在连接服务器时,会由服务器生
成唯一的 sesssion id,用该 session id为标识来存取服务端的 session空间。而 session id存
储在 cookie中,用户提交页面时会将这个 session id提交到服务端,来存取 session数据这
过程是不用开发人员干预的,所以一旦客户端禁用 cookie,那么 session也会失效。
另外
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主
要考虑到减轻服务器性能方面,应当使用 COOKIE
Session id是服务器和客户端链接时候随机分配的。
231 cookie和 session
由于http的无状态性,为了使某个域名下的所有网页能够共享某些数据Session和cookie
出现了。客户端访问服务器的流程如下
首先,客户端会发送一个http请求到服务器端
服务器端接受客户端请求后,建立一个session并发送一个http响应到客户端,这个响应
头,其中就包含Set- Cookie头部。该头部包含了 session。Set- Cookie格式如下,具体请
看 Cookie详解
Set-Cookie: value[: expires=date: domain=domain] path=path][ secure
在客户端发起的第二次请求,假如服务器给了set- Cookie,浏览器会自动在请求头中添加
cookie
服务器接收请求,分解 cookie,验证信息,核对成功后返回 response给客户端
OhttpreqUest
② Http Respons+set-coke
OhttpRequest
Web client
Web Server
④ Http reSponse
cookie只是实现 session的其中一种方案。虽然是最常用的,但并不是唯一的方法。禁用
cookie后还有其他方法存储,比如放在ur中
现在大多都是 Session+ Cookie,但是只用 session不用 cookie,或是只用 cookie,不用
session在理论上都可以保持会话状态。可是实际中因为多种原因,一般不会单独使用
用 session只需要在客户端保存一个id,实际上大量数据都是保存在服务端。如果全部用
cookie,数据量大的时候客户端是没有那么多空间的
如果只用 cookie不用 session,那么账户信息全部保存在客户端,一旦被劫持,全部信息都
会泄露。并且客户端数据量变大,网络传输的数据量也会变大
简而言之, session有如用户信息栏案表,里面包含了用户的认证信息和登录状态等信息.而
cookie就是用户通行证
2311分布式情况下的 session和 token
我们已经知道 sess on时有状态的,一般存于服务器内存或硬盘中,当服务器采用分布式
或集群时, session就会面对负载均衡问题。
负载均衡多服务器的情况,不好确认当前用户是否登录,因为多服务器不共享 session。这
个问趑也可以将 session存在一个服务器中来解决,但是就不能完全达到负载均衡的效果。
当今的几种解决 sess on负载均衡的方法
而 token是无状态的, token字符串里就保存了所有的用户信息
客户端登陆传递信息给服务端,服务端收到后把用户信息加密( toker)传给客户端,客户
端将tken存放于 localStroage等容器中。客户端每次访问都传递 token,服务端解密 token
就知道这个用户是谁了。通过cpu加解密,服务端就不需要存儐 session占用存储空间
就很好的解决负载均衡多服务器的问题了。这个方法叫做WT( son web token)
session存储于服务器,可以理解为一个状态列表,拥有一个唯一识别符号 session,通
常存放于 cookie中。服务器收到 cookie后解析出 sessionld,再去 sessIon列表中查找,才
能找到相应 sessIon。依赖 cookie
cookie类似一个令牌,装有 session,存储在客户端,浏览器通常会自动添加
token也类似一个令牌,无状态,用户信息都被加密到 token中,服务器收到 token后解
密就可知道是哪个用户。需要开发者手动添加
jMt只是一个跨域认证的方案
2.3.2 token
token也称作令牌,由山d+tme+sgn[+固定参数]
token的认证方式类似于临时的证书签名,并且是一种服务端无决态的认证方式,非常适合
于 REST AP|的场景.所谓无状态就是服务端并不会保存身份认证相关的数据
uid:用户唯一身份标识
time:当前时间的时间戳
sign:签名,使用hash/ encrypt压缩成定长的十六进制字符串,以防止第三方恶意拼接
固定参数(可选:将一些常用的固定参数加入到 token中是为了避免重复查库
token是用户身份的验证方式,我们通常叫它:令牌。最简单的 token组成ud(用户唯一的
身份标识、time(当前时间的时间戳)、sign(签名,由 token的前几位+盐以哈希算法压缩成
一定长的十六进制字符串,可以防止恶意第三方拼接 token请求服务器)。还可以把不变的参
数也放进 token,避免多次查库
token在客户端一股存放于 totalStorage, cookie,或 sessionStorage中。在服务器一般存于
数据库中
token的认证流程与 coOKIe很相似
用户登录,成功后服务器返回 Token给客户端。
客户端收到数据后保存在客户端
客户端再次访问服务器,将 token放入 headers中
服务器端采用 filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码
23.21 token可以抵抗csrf, cookie+ session不行
假如用户正在登陆银行网页,同时登陆了攻击者的网页,并且银行网贞未对cs攻击进行
防护。攻击者就可以在网页放一个表单,该表单提交srC为
htt/www.Bank.com/api/transfer,body为count=1008to=om。倘若是session+cookie,
用户打开网页的时候就已经转给Tom1000元了因为form发起的P○ST请求并不受到浏
览器同源策略的限制,因此可以任意地使用其他域的 Cookie向其他域发送POST请求,
形成CSRF攻击。在post请求的瞬间, cookie会被浏览器自动添加到请求头中。但 token
不同, token是开发者为了防范csr而特别设计的令牌,浏览器不会自动添加到 headers
里,攻击者也无法访问用户的 token,所以提交的表单无法通过服务器过滤,也就无法形
成攻击。
233 Token和 Session的区别
session和 token并不矛盾,作为身份认证 token安全性比 session好,因为每个请求都
有签名还能防止监听以及重放攻击,而 session就必须靠链路层来保障通讯安全
如上所说,如果你需要实现有状态的会话,仍然可以增加 session来在服务器端保存
些状态App通常用 restful api跟 serve打交道。Rest是 stateless的,也就是app不需
要像 browser那样用 cookie来保存 session,因此用 session token来标示自己就够了
sessIon/ state由 apI server的逻辑处理。如果你的后端不是 stateless的 rest ap那么你可
能需要在app里保存 session.可以在app里嵌入 webkit用一个隐藏的 browser来管理
cookiesession.Session是一种HTTP存储机制,目的是为无状态的HTP提供的持久机
制。
所谓 Session认证只是简单的把User信息存储到 Session里,因为SID的不可预测性,
暂且认为是安全的。这是一种认证手段
而 Token,如果指的是 OAuth Token或类似的机制的话,提供的是认证和授权,认
证是针对用户,授权是针对App。
其目的是让某App有权利访问某用户的信息。这里的 Token是唯一的。不可以转移
到其它Aop上,也不可以转到其它用户上。
转过来说 Session。 Session只提供一种简单的认证,即有此SD,即认为有此User的全
部权利。
需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方App。
所以简单来说,如果你的用户数据可能需要和第三方共享,或者允许第三方调用AP接
口,用 Taken
如果永远只是自己的网站,自己的App,用什么就无所谓了。
token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授
权该软件; cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样
你下次在登录某个网站,就会自动调用coke自动登录用户名; session和coke差不
多,只是 session是写在服务器端的文件,也需要在客户端写入 cookie文件,但是文件
里是你的浏览器编号 Session的状态是存储在服务器端客户端只有 session id而 Token
的状态是存储在客户端。
33JUC多线程及并发包
311谈谈你对 volatile的理解
31.11 volatile是Java虛拟机提供的轻量级的同步机制
311111保证可见性
311212不保证原子性
31313禁止指令重排
3122JMM你谈谈
JMM(Java内存模型 Java Memory Model简称MM本身是一种抽象的概念并不真实存在,它
描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段静态字段和构成数
组对象的元素)访问方式
JMM关于同步规定
1线程解锁前,必须把共享变量的值刷新回主内存
2线程加锁前,必须读取主内存的最新值到自己的工作内存
3加锁解锁是同一把锁
由于M运行程序的实体是线程而每个线程创建时MM都会为其创建一个工作内存(有些
地方成为栈空间,工作内存是每个线程的私有数据区域而Java內存模型中规定所有变量都
存储在主內存,主内存是共享内存区域所有线程都可访问,但线程对变量的操作(读取赋值等)
必须在工作内存中进行首先要将变量从主内存拷贝到自己的工作空间然后对变量进行操作
操作完成再将变量写回主内存不能直接操作主内存中的变量各个线程中的工作内存储存着
主内存中的变量副本拷贝因此不同的线程无法访问对方的工作内存此案成间的通讯传值)
必须通过主内存来完成其简要访问过程如下图:
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.