Java后端面试复习7.23

  1. 进程和线程
  2. 线程优先级
  3. 线程状态
  4. 线程构造方式三种
  5. 推荐用哪种为什么
  6. 线程中断调用什么方法,本线程怎检查
  7. 为什么线程不应强制停止
  8. 线程通信方式四种
  9. ThreadLocal
  10. FUtureTask
  11. 线程礼让
  12. 终止线程的另一个缺陷(锁)
  13. 守护线程
  14. 什么时候设置为守护县城
  15. sleep,yieldjoin的区别
  16. 能否按照优先级严格执行
  17. THreadlocal的例子Simpledataformat
  18. Threadlocal的弱引用
  19. 解决map冲突
  20. 内存泄露,怎么解决
  21. 域名分片
  22. 短连接长链接流水线
  23. 什么是cookie
  24. 请求头和响应头那些和cookie有关
  25. 可以设置多个cookie
  26. 保存在哪
  27. 设置有效期两种手段
  28. 作用域domain和路径path
  29. cookie分类,时间和存储
  30. cookie的缺点
  31. 什么事session
  32. session存储的信息
  33. 客户鞋带什么信息
  34. session实现方式两种
  35. session存在的问题
  36. 使用token流程
  37. 什么是token
  38. jwt的三个组成部分
  39. 优点

  1. 分配资源,CPU调度
  2. 1-10,调用setPriority设置,越大时间片越多,默认5
  3. 初始,运行,阻塞(于锁),等待,超市等待,结束
  4. 实现Runnalbe,Callable,继承Thread
  5. 前两种,1只能单继承2继承的没用属性占地方
  6. 对应线程的interrupt,调用本线程的isInterrupt
  7. 因为很可能当前线程为执行完造成数据丢失
  8. volatile保证可见,synchronized同步,wait和notify,对应线程.join
  9. 只允许本线程访问的一种map形式的结构,key为ThreadLocal对象,值可以是任意的。可以通过对象。set或对象。get获取或设置
  10. 既实现了Runnable定义run方法执行,又能够配合Callable(将callable当作参数传入构造方法)获取run的返回值
  11. 调用yield方法,让同优先级的或者有更高优先级的线程去执行。
  12. 比如有一个线程有ReentrantLock,他持有锁的时候被终止了,那么他的锁也不会释放,其他等待锁的线程就无法获得锁
  13. 守护线程是一类优先级比较低的线程,他们会随着用户线程的退出而终止,也就是说守护线程不会单独存在,GC线程,
  14. 必须在线程启动之前调用set来设置
  15. sleep会使得线程转入wait的状态,并且如果当前线程持有锁,他不会释放。yield会有running转为runnable状态,允许相同优先级的其他线程或者优先级更高的线程去执行。join是会让当前线程由running转为runnable的状态,等待相应的线程执行完之后才能执行后续代码
  16. 不一定,因为线程的优先级调度是根据实际的OS调度的,Java对OS的兼容没有那么完美
  17. 比如有一个sdf对象,sdf是线程不安全的,比如我想调用parse这个方法,这个方法分两步,首先执行clear,然后set,如果线程1正好set完,线程二执行clear就会导致线程并发安全问题。一种方法是使用synchorized进行同步,但是效率低,第二种使用threadlocal来保存sdf对象。
  18. threadlocal使用map保存,每个线程有一个htreadlocalmap对象,该对象保存了所以threadlocal对象以及其存储的值之间的映射关系,如果存储的值是对象,这里保存的是指向堆的地址。key是使用threadlocal内部定义的entry来实现的,这个entry继承了weakreference,所以map中的key都是若引用类型
  19. map冲突不是使用拉链发来解决的,而是线性探测法,向后寻找空位置
  20. 内存泄漏-->长生命周期的对象持有短生命周期对象的引用。比如说在线程池中,当一个线程执行完当前任务后,他的threadloacl会置空,那么这些身为弱引用的key会在下一次gc的时候被回收,但是他们的长生命周期的value还在堆空间中,并且由于线程池没被回收,所以这些堆空间中的value就不会被回收造成内存泄漏。
  21. 多个域名只想同一个服务器,不同域名可以与客户端建立多个连接,既避免了触发Dos防御,又提高了并发。
  22. 每次发送数据接受数据都建立tcp链接。建立一次tcp链接,再次链接上进行收发数据。发送方不用等第一个请求返回既可以发剩余请求
  23. 保存在浏览器,记录用户状态
  24. 请求头:Cookie响应头:setcookie
  25. 可以,分号分隔,响应头设置多个setcookie字段
  26. 浏览器
  27. 在cookie中设置两个字段,expires和max-age,取小的作为年龄,expires记录了过期时间,到了就过期,max-age要计算,颁发时间+max-age=过期时间
  28. domain制定了cookie所属的域名和访问路径,如果请求不满足这两个就不会携带该cookie
  29. 时间:长期和短期,存储:物磁盘和内存
  30. 实现简单,能够记录用户状态。占用带宽比较多,不安全,数量容量限制
  31. 服务器端保存用户信息和事件的手段
  32. 用户的事件,用户基本信息
  33. sessionid
  34. 基于cookie,使用cookie携带session id或者基于重写url,在url上写session id
  35. 大量用户的计算和存储资源的耗费大,分布式系统不同服务间无法共享
  36. 客户发起请求(登录),根据用户信息构建token,将token发送给用户,用户后续请求携带token,服务器解析token识别用户,响应数据
  37. token是保存用户信息,便于服务器识别用户的手段
  38. 头部记录使用的加密算法,载荷记录用户名过期时间等信息,签名根据前面两个字段以及密钥生成,服务器用以验证
  39. 可以跨站,占用空间不大,依赖算法加密的安全性
相关推荐
煤泥做不到的!33 分钟前
挑战一个月基本掌握C++(第十一天)进阶文件,异常处理,动态内存
开发语言·c++
F-2H35 分钟前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
苹果酱056738 分钟前
「Mysql优化大师一」mysql服务性能剖析工具
java·vue.js·spring boot·mysql·课程设计
_oP_i2 小时前
Pinpoint 是一个开源的分布式追踪系统
java·分布式·开源
mmsx2 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
bryant_meng2 小时前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
武子康2 小时前
大数据-258 离线数仓 - Griffin架构 配置安装 Livy 架构设计 解压配置 Hadoop Hive
java·大数据·数据仓库·hive·hadoop·架构
若亦_Royi2 小时前
C++ 的大括号的用法合集
开发语言·c++
资源补给站3 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
豪宇刘3 小时前
MyBatis的面试题以及详细解答二
java·servlet·tomcat