阿里盒马鲜生Java工程师一面面经(7.30投递)

一面(8.13,30min)

1. 自我介绍

2. 项目讲解

3. 平时数据库你是怎么去维护的?你觉得需要注意的指标有哪些?

3. OSI七层模型

4. TCP在哪一层?TCP和UDP的区别?

5. 进程、线程、协程之间的关系,什么是守护线程?


联系:一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。
线程有时被称为轻量级进程(Lightweight Process,LWP),是操作系统调度(CPU调度)执行的最小单位。
协程是一种用户态的轻量级线程,协程的调度完全由用户程序控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
守护线程:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ,只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。守护线程最典型的应用就是 GC (垃圾回收器)。

6. 进程间的通信方式以及线程之间的通信方式


进程之间的通信方式:1. 共享内存 2. 管道 3. 消息队列 4. 信号量 5. 套接字 6. 信号
线程之间的通信方式:1. 使用volatile关键字 2. 使用synchronized配合wait()和notify() 3. JUC工具类CountDownLatch(闭锁) 4. 使用ReentrantLock结合Condition 5. BlockingQueue阻塞队列

7. 介绍一下Java中的集合(List,Set,Map)

8. HashMap的老八股, 如果是一个Object作为hashMap的key的话这个对象需要满足什么条件?

Hashmap不允许有重复的key,所以要重写它的hashcode和equals方法,以便确认key是否重复。重写hashCode()是因为需要计算存储数据的存储位置,重写equals()方法目的是为了保证key在哈希表中的唯一性。

9. concurrentHashMap为什么使用分段锁?分段锁的概念?为什么1.8去除了Segement,有什么好处?



10. ACID特性、隔离级别以及脏读不可重复读和幻读

11. 数据库底层事务的隔离性怎么实现的?

数据库的隔离级别有四种
1. 读未提交 2. 读已提交 3. 可重复读 4. 串行化
1. 读未提交:顾名思义,一个事务读取到了另一个事务还未提交的数据
该隔离级别读未加锁,但写加了X锁
2. 读已提交 3. 可重复读
这两个隔离级别在数据库中使用了MVCC多版本并发控制,但MVCC只对读操作有效,对写操作无效,防止不了幻读。
读已提交能够防止脏读是因为MVCC会在事务每一次执行查询语句时生成一个Read View,Read View会排除读取在查询之前的数据,也就防止了脏读,当不能避免不可重复读。
可重复读能够防止不可重复度是因为MVCC会在事务第一次执行查询语句时只生成一个Read View,Read View会排除读取在该事务版本号之前的数据,也就实现了可重复读。
4. 串行化
普通的select语句都会转化为select ... lock in share mode 也就是加了S锁,必须等读语句执行完才能对数据进行修改,这也是为什么串行化能防止幻读的原因

12. 数据库索引底层的B+树结构以及为什么这样设计的原因?

13. 找出字符串中字符出现的次数。


笔试挂了
😅😅😅😅#盒马2021校园招聘##面经##校招##盒马##Java工程师#
全部评论
牛客视频面试吗
1 回复 分享
发布于 2021-08-20 18:54
兄弟,oc了吗?
点赞 回复 分享
发布于 2021-08-24 22:11
电话面是怎么写代码的呢?
点赞 回复 分享
发布于 2021-09-01 11:56
老哥,咋样啊,我们同样的部门
点赞 回复 分享
发布于 2021-09-02 19:54

相关推荐

11-18 16:49
已编辑
江南大学 Java
一面二面都是电话面,一面的话都是按照简历来问,基本上就是八股,项目,基本上都回答上来了,没什么问题。一面后是笔试,笔试题就是常规的15+3吧,写了两题就交了二面直接寄了,主要是没怎么准备,而且已经拿到比较满意的offer了,也没怎么在意,想着就不准备随缘了,后面也是打算完全转安卓开发了。总体说一下二面,面试官考察的重点好像不在简历,从最基本的理论开始问到具体实现。(感觉就算准备了也是寄,都是我没怎么注意的点,我自己主要准备的还是spring+juc,简历突出的也是这两点)1. JAVA跟其他语言的区别2. JVM的组成3. 静态变量放在哪里4. 类加载机制5. 垃圾回收算法6. JDBC怎么用的7. JDBC的原理8. 面向接口编程的优势9. 异常有哪些类10. 连接数据库的异常是哪个类,叫什么名字11. 为什么用设计模式?12. servlet用什么设计模式13. 开闭原则14. spring的Bean管理15. 多线程下spring怎么做的线程隔离(好像是问内存模型,脑子抽了回答的ThreadLocal)16. 多线程下公用变量怎么保证安全17. 问了项目的难点18. 软件工程学过没,知不知道有哪些设计图,设计流程19. 怎么学习java的20. 后续学习规划21. 个人优势这一套下来感觉自己不是个学计算机的学生,好多理论知识都不太记得了。面试官也建议不要只关注具体实现和用法,背后的原因原理也要了解。-----------------------刚写完面经20分钟就进终面了,感觉面的最差的一次,有点意外。定的后天的终面。 #盒马鲜生# #盒马鲜生面经# #java#
查看21道真题和解析
点赞 评论 收藏
分享
评论
6
41
分享
牛客网
牛客企业服务