| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 1.整理华子面经--1 -> 正文阅读 |
|
[Java知识库]1.整理华子面经--1 |
细说项目中遇到的难点?C++项目:撤销恢复模块: 拥有三个属性:
主要函数:
底层模型数据结构设计,级联更新 以一个六面体网格为例,他需要保存的网格信息有,网格节点,网格线,网格面,网格单元,部件信息,这四者之间的关系是: 网格节点/网格线/网格面拥有它被哪些网格单元共有的信息,节点索引信息 网格单元/网格面/网格线有构成自己的网格节点顺序索引 网格节点拥有位置信息,是以上结构的基础 Java项目:遇到的困难:人人开源返回类R的问题,Feign远程调用丢失请求头问题 项目经典逻辑: 合并购物车功能 背景:购物车分为离线购物车和在线购物车,离线购物车可以购买商品,在用户登录以后,离线购物车会被清空,所有商品被转移到在线购物车
定时关单逻辑+自动解锁库存逻辑 秒杀逻辑 定时上架商品:定时任务扫描mysql将商品信息预热到redis中,考虑到分布式幂等性的问题,使用redisson分布式锁来实现 存储结构:一共有两块信息
用户排重:用户如果已经进行了秒杀,使用一个key去redis中进行占位,以此来防止重复秒杀 异步削峰处理:在用户秒杀成功后,给rabbitMq发送消息,rabbitMq监听接口在拿到秒杀信息后,在数据库保存订单相关的结构 提交订单按钮的幂等性保证 在转到订单页的时候,在页面上存储一个token并且在redis中也存放一个token,在点击按钮的时候尝试删除这个token,如果删除成功就执行后续的操作,否则快速失败,其中检验token和删除token使用LUA脚本来保证原子操作 线程的优先级?操作系统线程和JVM线程?Java中优先级分为1-10个级别,优先级高的线程得到的cpu资源多,线程优先级有继承特性,如果a线程启动了b线程,那么b线程将继承a线程的优先级 现在java中线程的本质其实就是操作系统中的线程,操作系统中进程的状态分为:创建,就绪,运行,等待和销毁,java的线程状态有创建,运行,等待,超时等待,阻塞和销毁 CAS怎么进行交换?当要对变量进行修改的时候,会先将内存位置的值与预期的变量原值进行比较,如果一致就将内存位置更新为新值,否则不做操作,Java中的CAS的底层是Unsafe类和自旋锁,unsafe类中方法都是native修饰,不属于java代码,最后映射到操作系统的指令是cmpxchg; 数据库执行一条查询语句的过程?
如何设计单点登录?同域名下的单点登录:cookie的domain设置为当前父域,并且父域的cookie会被子域共享 不同域名下的单点登录: 方案一:由于不同域下的cookie不共享,可以部署一个认证中心,用于专门处理登录请求的独立web服务,用户在认证中心登录成功后,认证中心记录其登录状态,创建授权令牌,然后将授权令牌作为参数发送给各个子系统,应用系统通过检查当前请求有无token来了解用户登录状态; 方案二:在前后端分离框架中,将SessionId或者token保存到LocalStorage中,让前端每次向后端发送请求,主动将localStorage的数据传递给服务器,localstorage是html5的新特性,主要用于本地存储 ?最快最稳定的排序算法Timsort结合了插入排序和归并排序,在数据量较少(<64)的情况下使用插入排序,否则使用归并排序+二分搜索来提高排序效率 ?Stream流式编程
例题:筛选出年龄小于30并且id为偶数的用户名并且倒序输出
Fork/Join是什么?可以将一个大的任务拆分成多个子任务进行并行处理,以下是一个大量数字相加的简单的例子:
其底层有多个工作队列,当通过invoke或者submit方法提交任务的时候,forkjoinpool根据一定的路由规则把任务提交到每个工作队列中,如果在任务执行过程中出现子任务,那么子任务会提交到工作线程对应的工作队列中,每个线程都维护着一个工作队列,这是一个双端队列,每个工作线程在处理自己的工作队列的同时,会尝试窃取一个任务,窃取的任务位于其他线程的工作队列的base,而新任务会放在工作队列的top,也就是说窃取时使用FIFO,处理自己队列时使用的是LIFO,在遇到join的时候,如果需要join的任务尚未完成,会先处理其他的任务并且等待其完成 Java默认有几个线程?每当使用java命令执行一个类的时候,实际都会启用一个JVM,所以每个java运行的时候至少会启动两个线程,一个main线程,一个垃圾回收线程 二进制补码,反码?
正数的源码,补码和反码都是一致的,要得到一个负数的二进制,首先拿到正数的二进制,取得反码后再得到补码 洗牌算法?打乱一个没有重复元素的数组,在每次迭代中,生成一个范围在当下下标到数组末尾元素下标之间的随机整数,将当前元素与随机选出的下标所指定的元素进行交换,元素可以与自己进行交换 证明:设一个元素m被放入第i个位置的概率为P=前i-1个位置选择元素时没有选中m的概率*第i个位置选中m的概率
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:31:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |