一面

泊松分布下,出现8次的概率已经非常低了

hashmap在jdk1.8中的变化? 如何实现解决死循环? 经常问
参考链接
hashMap很不错的总结

1.8还有4点主要的优化:
1:数组+链表改成了数组+链表或红黑树;:
2:链表的插入方式从头插法改成了尾插法,简单说就是插入时,如果数组位置上已经有元素,1.7将新元素放到数组中,原始节点作为新节点的后继节点,1.8遍历链表,将元素放置到链表的最后;
3:扩容的时候1.7需要对原数组中的元素进行重新hash定位在新数组的位置,1.8采用更简单的判断逻辑,位置不变或索引+旧容量大小;
4:在插入时,1.7先判断是否需要扩容,再插入,1.8先进行插入,插入完成再判断是否需要扩容;jdk1.7中:put过程中的resize方法在调用transfer方法的时候导致的死锁
多线程同时put时,如果同时触发了rehash操作,会导致HashMap中的链表中出现循环节点,进而使得后面get的时候,会死循环get(key)方法时获取key的hash值,计算hash&(n-1)得到在链表数组中的位置

hashMap在Jdk1.7中为何出现死循环?
https://blog.csdn.net/qq_36520235/article/details/86653136

CAS与ABA问题?什么时候出现ABA问题?
空间担保失败

空间分配担保:
当出现大量对象在Minor GC后仍然存活时,就需要老年代进行分配担保,把survivor无法容纳的对象直接进入到老年代中,前提是老年代本身还有容纳这些对象的剩余空间
把每一次回收晋升到老年代对象容量的平均值作为参考,与老年代的剩余空间进行比较,如果老年代空间不足(担保失败),需要进行Full GC(回收新生代与老年代)

Cms的过程,四个过程
Cms与G1的区别 不会的面经中有
G1收集器有什么特点?哪些会stop the world?

让三个线程顺序执行的方法,一直问,很多很多

join()
countdownLatch
wait()和notify()
使用线程池 将所有线程放入一个阻塞队列 ,保证顺序输出
通过一个ReentrantLock和三个conditon实现
synchronized+一个状态变量
信号量

零拷贝

mmap: 通过内存映射,将文件映射到内核缓冲区,同时,用户空间可以共享内核空间的数据。这样,在进行网络传输时,就可以减少内核空间到用户空间的拷贝次数sendFile:数据被 DMA 引擎从文件复制到内核缓冲区,然后调动 write 方法时,从内核缓冲区进入到 Socket,这时,是没有上下文切换的,因为在一个用户空间。最后,数据从 Socket 缓冲区进入到协议栈。区别:
mmap 适合小数据量读写,sendFile 适合大文件传输。
mmap 需要 4 次上下文切换,3 次数据拷贝;sendFile 需要 3 次上下文切换,最少 2 次数据拷贝。
sendFile 可以利用 DMA 方式,减少 CPU 拷贝,mmap 则不能(必须从内核拷贝到 Socket 缓冲区)。

内存映射文件

内存映射文件,是指文件和内存逻辑地址映射起来。
mmap()返回一个指针ptr,可以通过指针进行读写,而不必通过read()或者write()
ptr指向一个逻辑地址,需要MMU把逻辑地址转换成物理地址。

mmap,和 read,write的区别,mmap减少了哪一次拷贝?

1:mmap是一种内存映射文件的方法,即将一个文件映射到进程的地址空间,实现文件磁盘地址和进程地址空间之间的映射
2:进程就可以使用指针读写这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,不必再调用read,write等系统调用函数。
相反,内核空间对这段地址区域的修改也直接反映到用户空间,从而可以实现不同进程间的文件共享区别:
系统调用read(), 读文件时需要先将文件页从磁盘拷贝到页缓存中,由于页缓存处在内核空间,不能被用户进程直接寻址,所以还需要将页缓存中数据页再次拷贝到内存对应的用户空间中。
这样,通过了两次数据拷贝过程,才能完成进程对文件内容的获取任务。
write() 写操作也是一样,也是需要两次数据拷贝而使用mmap操作文件中,创建新的虚拟内存区域和建立文件磁盘地址和虚拟内存区域映射这两步,没有任何文件拷贝操作。
而之后访问数据时发现内存中并无数据而发起的缺页异常过程,可以通过已经建立好的映射关系,只使用一次数据拷贝,就从磁盘中将数据传入内存的用户空间中,供进程使用。

Redis速度快的原因?
单线程会有什么问题?

单进程单线程弊端
无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善;

然后问io多路复用,epoll模型的过程? 使用什么数据结构
eventpoll结构体

用户态与核心态
拜占庭算法

拜占庭问题又叫拜占庭将军问题,讨论的是允许存在少数节点作恶(消息可能被伪造)场景下的如何达成共识问题。
拜占庭容错(Byzantine Fault Tolerant,BFT)讨论的是容忍拜占庭错误的共识算法

大数据相关问题,我不会
为什么使用B+树?
覆盖索引

性别上建索引会用到吗? 重复度超过30%不会走索引
ACID特性
幻影读
bin log/ redo log的区别

算法,最长回文子串

数据服务部门,做大数据的

java技术栈,spring, spring cloud, mysql, redis,卡夫卡,然后还有大数据的开发的工具,比如hadoop啥的

9.3 二面

Spring
Servlet的生命周期
ArrayList插入元素时其他元素怎么移动?
LinkedHashMap的实现,这次加深了理解了
Java中乐观锁悲观锁,各自怎么实现?有什么优缺点?
Mysql中的语句

算法:计数器
int calculate(String exp)
exp = “3-125+34*5”

正整数 ±*

#coding=utf-8
import sys
#str = raw_input()
import collectionsdef mul(exp):res = 0i = 0stack = []while i < len(exp):if '0'<=exp[i]<='9':start = iwhile i < len(exp) and '0' <= exp[i] <= '9':i += 1stack.append(int(exp[start: i]))i -= 1else:if len(stack) >= 2:res *= (stack.pop() * stack.pop())i += 1return resexp = '9*2*3*2'
print(mul(exp))def calculate(exp):s1 = exp.split('+') # "3-12*5, 3*4*5"s2 = []for s in s1:s3 = s.split('-') # 3 12*5, 3*4*5s2.append(s3)mapp = collections.defaultdict()for ex in s2:if '*' in ex:mapp[ex] = mul(ex)for key, value in mapp:  # 3-60+60exp.replace(key, value)res = 0i = 0sign = [1]while i < len(exp):if '0'<=exp[i]<='9':start = iwhile i < len(exp) and '0' <= exp[i] <= '9':i += 1res += (sign.pop()* int(exp[start: i]))i -= 1elif exp[i] == '+':sign.append(1)elif exp[i] == '-':sign.append(-1)i += 1return res

重写了一下!

def calExp(strs):if not strs: return []stack1 = []stack2 = []i = 0while i < len(strs):if '0' <= strs[i] <= '9':start = iwhile i < len(strs) and '0' <= strs[i] <= '9':i += 1num = int(strs[start:i])stack1.append(num)i -= 1elif strs[i] == '+' or strs[i] == '-':stack2.append(strs[i])elif strs[i] == '*':pre = stack1.pop()i = i + 1start = iwhile i < len(strs) and '0' <= strs[i] <= '9':i += 1#print(start, i)cur = int(strs[start: i])print(start, i, cur)stack1.append(pre*cur)i -= 1i += 1stack1.reverse()stack2.reverse()while stack1 and stack2:first = stack1.pop()second = stack1.pop()op = stack2.pop()if op == '+':stack1.append(first + second)else:stack1.append(first - second)return stack1[0]strs = '90+8*3*40-9-19+23'
res = calExp(strs)
print(res)'''
90+8*3*40-9-19+23数字  stack1 = [90, 8]
操作  stack2 = [+]'''

快手提前批--Java开发面经相关推荐

  1. 京东java开发面经_面经|京东技术中台Java开发面经

    原标题:面经|京东技术中台Java开发面经 作者:牛肉干o 来源:牛客网 京东技术中台Java开发 title: 京东技术中台秋招面试 希望自己别再干蠢事了 把昨天上午的快手面试给忘了,一觉睡过去了. ...

  2. 面试java回答优缺点_阿里Java开发面经分享,面试题(附回答)

    下面要给大家分享一个阿里Java开发面经,里面包含了具体的问题,以及相关回答,主要包括了数据库.操作系统.项目相关.java基础.数据结构.计算机网络等内容. 一.数据库 1.为什么在项目中用Mong ...

  3. 思科java开发面试题

    思科java开发面试题 1.mybatis怎么用的 2.MySQL怎么用的 3.git怎么用的 4.hashmap和hashtable 5.建立多线程 6.设计模式 7.程序的优化 8.程序的安全

  4. 2022高级JAVA开发面试题精选

    面试过程是一个由浅入深的过程,面试官先给求职者抛出一个相对简单的问题,然后通过一环套一环的追问深入考察求职者对知识点的理解掌握程度. 如下是一个实际的关于redis知识点的面试场景: 面试官:你用过r ...

  5. Java开发面试题——很有帮助的

    面试题 一.Java 1.运行机制 1)Java跨平台原理 Java实现跨平台是JVM(Java虚拟机)起的作用.如果是C/C++的编译方式,一旦换了一个平台,那么就需要重新编译一份对应的可执行代码, ...

  6. 五年java开发面经分享,注意这些细节让你offer拿到手软

    先来总结下程序员跳槽的原因: 钱没给够:没涨薪.涨薪太慢.自己提升太快,面试市场价高于当前薪资太多 职业发展:项目太简单.技术太旧.缺乏领导机会.并发不够 心受委屈:恶心的领导.恶心的制度.恶心的产品 ...

  7. Java开发面试题含答案(计算机网络、操作系统、Java、Mysql、Redis、Spring)

    Java开发一轮复习 一.网络篇 1.OSI七层模型与TCP/IP 五层模型 ​ OSI七层:物理层.数据链路层.网络层.传输层.会话层.表示层.应用层 ​ TCP/IP五层:物理层.数据链路层.网络 ...

  8. Java开发面试题及答案,SpringBoot统一日志处理原理

    <artifactId>slf4j-api</artifactId> <version>1.7.28</version> ``` 按照slf4j官方的说 ...

  9. 京东秋招java面试_最新秋招,京东技术中台Java开发面经,有想去面试的可以来看下...

    京东技术中台Java开发 image.png (面试题+答案+资料领取方式:关注公众号:程序员白楠楠) title: 京东技术中台秋招面试 希望自己别再干蠢事了 把昨天上午的快手面试给忘了,一觉睡过去 ...

最新文章

  1. C++之error: cannot bind non-const lvalue reference of type ‘myString’ to an rvalue of type ‘myString
  2. php的cookie不存在会是什么值,PHP setcookie() 首次存储不上值
  3. Mybatis select元素返回List
  4. Gnome 3.x 安装悬浮菜单栏
  5. 从 VMWare 到阿里神龙,虚拟化技术 40 年演进史
  6. Hbase+Phoenix使用总结
  7. 设计模式 代理模式(Proxy Pattern)
  8. 宿舍小助手之个人分析NABCD
  9. jfinal使用配置文件注意事情
  10. Codejock Suite Pro 19.3.0 Carck版本
  11. three.js 视频作为纹理贴图
  12. Endless无限循环·数字化趋势
  13. 关于(C++)数据结构复数计算器作业的拓展
  14. 树型结构总结:二叉查找树、堆、平衡树、2-3查找树、红黑树、B树、B+树
  15. Local declaration of '' hides instance variable
  16. 做事先做人 做人先立德
  17. 大数据文字游戏_什么是大数据?
  18. 王炸!10分钟把ChatGPT部署成24小时微信机器人!
  19. Spark 任务提交流程说明
  20. Linux/Unix开发之make和makefile详解

热门文章

  1. DZY Loves Chinese/DZY Loves Chinese II 题解
  2. 量子科技商业化寻路,资本造势但技术落地成难|科股宝
  3. .Net C# Lambda表达式
  4. 【毕业季】致大学江湖的青葱岁月,我与湖中大的四个夏天(情忆新月,梦系信科)
  5. HTML+CSS+JS实现3D爱心跳动特效
  6. 在ARCGIS中画一幅高程地图、地形图
  7. 计算机win10启动慢,详细教你解决win10开机速度慢
  8. HTML+CSS学习笔记(篇幅较大)
  9. EduCoder-Web程序设计基础-html5—表格高级样式的设置-第5关:表格的综合案例
  10. cannot enlist more than one non-XA resource