Java后台面经

2019-03-11 小米散招面试-Java后台实习

2019-03-11  本文已影响0人  rol233

1.项目

简历上的项目描述:

2018.09-2018.12 企业级电商系统

本项目使用SMM框架开发,使用Git控制版本,数据库使用MySQL,商品模块抽象出 POJO,BO,VO 模型,并实现了高效分页及动态排序,与 FTP 服务器对接,可以进行 SpringMVC 文件上传和富文本文件上传。搭建 Tomcat集群和 Redis分布式,并利用 Nginx 进行负载均衡。            

问题:

1.介绍一下你的项目,可以画图讲解一下。(项目做了什么,用了什么技术,遇到什么难题,怎么解决)

2.数据库怎么搭建的?

3.一共有几张数据表,画图表示下表之间的关系

4.Tomcat集群,搭建了几个tomcat?

5.Git命令(Git push, Git commit)?

2.Java基础/数据库

2.1. ConcurrentHashMap的size方法怎么实现的

2.2. 画一个B+树

2.3. 为什么数据库索引用B+树不用红黑树(IO代价)

2.4. 100万条数据,用B+树,放几层(数据库一般3-5层)(IO代价)

2.5. 手写一个线程安全的单例模式(没有volatile关键字会怎样,volatile关键字的理解)

2.6. synchronize的理解(是什么锁)

2.7. Java内存分配(什么放新生代,什么放老年代)

2.8. 垃圾回收时,怎么确定哪些是要被回收的?

2.9. class A里的方法a 中 synchronize(A.class)   方法b 中也synchronize(A.class),那方法b能被执行么

synchronize(A.class) 和synchronize(this.class)的区别 

3.算法

3.1. 原地反置链表

3.2. 中序遍历二叉树(非递归)


感受

面试问题问的很深入,很细节,小米的环境很像学校实验室的感觉,准备的不够充分,答的不好,但是面试官人很Nice,就是当我答不上来的时候,他的眼神像是在质问我为啥这都不会,感觉非常羞愧!

上一篇下一篇

猜你喜欢

热点阅读