网络阿里面试题 4/1

网络阿里面试题 4/1

1. Java基本类型哪些,所占字节和范围

1 byte boolean
2 chat short
4 int float
8 long double

1. Set、List、Map的区别和联系

set 无序 不重复
有序 重复
map 不重复

1. 什么时候使用Hashmap

key唯一 无需保证实训

1. 什么时候使用Linkedhashmap、Concurrenthashmap、Weakhashmap

Linkedhashmap 需要保证顺序
Concurrenthashmap 并发
Weakhashmap threadlocal

1. 哪些集合类是线程安全的

concurrentHashMap CopyOnWriteArrayList Vector HashTable

1. 为什么Set、List、map不实现Cloneable和Serializable接口

我集合里存了个对象 你要怎么控制他能clone 只能做到浅拷贝

1. Concurrenthashmap的实现,1.7和1.8的实现

jdk7 数组+链表 头插法
jdk8 数组+链表+红黑树 尾插法 8个以上升级红黑树 6个以下降级链表

1. Arrays.sort的实现

快排

1. 什么时候使用CopyOnArrayList

并发安全 内部使用ReentrantLock Arrays.copyOf() 拷贝对象

1. volatile的使用

可见性(缓存一致性jvm lock 命令) 有序性 内存屏障
屏障类型 指令示例 说明
LoadLoad Barries Load1;LoadLoad;Load2 确保Load1数据的装载先于Load2以及后续装载指令的装载。
StoreStore Barries Store1;StoreStore;Store2 确保Store1数据刷新到内存先于Store2以及后续存储指令的存储。
LoadStore Barries Load1;LoadStore;Store2 确保Load1数据的装载先于Store2数据刷新到内存以及后续存储指令的存储。
StoreLoad Barries Store1;StoreLoad;Load2 确保Store1数据刷新到内存先于Load2数据的装载以及后续装载指令的装载。

1. synchronied的使用

1. reentrantlock的实现和Synchronied的区别

锁升级 AQS

1. CAS的实现原理以及问题

乐观锁 Compare And Swap 版本号

1. AQS的实现原理

源码 CAS实现 state值

1. 接口和抽象类的区别,什么时候使用

1. 类加载机制的步骤,每一步做了什么,static和final修改的成员变量的加载时机

加载 连接 初始化
连接时会初始化static final 对象 初始化赋予默认值

1. 双亲委派模型

1. 反射机制:反射动态擦除泛型、反射动态调用方法等

泛型是编译时期的规则 真真生成字节码会被擦除

1. 动态绑定:父类引用指向子类对象

1. JVM内存管理机制:有哪些区域,每个区域做了什么

不和你多bb

1. JVM垃圾回收机制:垃圾回收算法 垃圾回收器 垃圾回收策略

标记-清除 速度快 有内存碎片
标记-整理 相对慢 没内存碎片
标记-复制 相对快 没有内存碎片 需要两倍的空间
G1 region 可预期stw时间 stw一次
CMS 老年代 最短stw stw一次

1. jvm参数的设置和jvm调优

相同的堆内存 对于web项目 年轻代适量调大 减少进入老年代的次数
通过 jmap jstat 观察堆内存 如查看年轻代 gc次数 与老年代gc次数

1. 什么情况产生年轻代内存溢出、什么情况产生年老代内存溢出

老年代不够-担保不了 , 内存溢出或者 内存本身不够

1. 内部类:静态内部类和匿名内部类的使用和区别

静态内部类可当作一个正常的类进行创建
匿名内部类 比如runable使用lamba表达式创建匿名内部类 因为我们只使用一次避免显示的对象产生 减少代码量

1. Redis和memcached:什么时候选择redis,什么时候选择memcached,内存模型和存储策略是什么样的

memcached 多核 没有持久化 存储结构单一 cas保证并发修改

1. MySQL的基本操作 主从数据库一致性维护

binlog row statement mix

1. mysql的优化策略有哪些

索引 组合索引
避免索引失效

1. mysql索引的实现 B+树的实现原理

mysql b+树 只在叶子结点保存数据, 在叶子之间用链式连接 加快遍历

1. 什么情况索引不会命中,会造成全表扫描

索引条件被mysql判定为不如全表扫描
最左原则

1. java中bio nio aio的区别和联系

bio 面向流 阻塞io
nio 面向管道 buffer 非阻塞io
异步io

1. 为什么bio是阻塞的 nio是非阻塞的 nio是模型是什么样的

netty

1. Java io的整体架构和使用的设计模式

reactor

1. Reactor模型和Proactor模型

1. http请求报文结构和内容

1. http三次握手和四次挥手

1. rpc相关:如何设计一个rpc框架,从io模型 传输协议 序列化方式综合考虑

1. Linux命令 统计,排序,前几问题等

1. StringBuff 和StringBuilder的实现,底层实现是通过byte数据,外加数组的拷贝来实现的

1. cas操作的使用

1. 内存缓存和数据库的一致性同步实现

1. 微服务的优缺点

1. 线程池的参数问题

1. ip问题 如何判断ip是否在多个ip段中

1. 判断数组两个中任意两个数之和是否为给定的值

1. 乐观锁和悲观锁的实现

1. synchronized实现原理

1. 你在项目中遇到的困难和怎么解决的

1. 你在项目中完成的比较出色的亮点

1. 消息队列广播模式和发布/订阅模式的区别

1. 生产者消费者代码实现

1. 死锁代码实现

1. 线程池:参数,每个参数的作用,几种不同线程池的比较,阻塞队列的使用,拒绝策略

1. Future和ListenableFuture 异步回调相关

1. 算法相关:判断能否从数组中找出两个数字和为给定值,随机生成1~10000不重复并放入数组,求数组的子数组的最大和,二分查找算法的实现及其时间复杂计算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值