蚂蚁金服Java开发面经(已意向)
蚂蚁金服Java开发一面9.8(1h13min)
杭州的小哥,面试结束后我表示想去成都,面试官很好帮我转到了成都的部门重新面试。(后来补的记录而且八股多,所以懒得写回答了)
1、自我介绍
2、有哪些排序算法,分别说其特点,时间空间复杂度,是否稳定,适用场景?(说了直接插入、直接选择、堆排序、冒泡排序、快速排序、归并排序,期间会追问,所以必须理解)
3、队列和栈?
4、Cpp和Java的内存区域?Cpp有野指针,Java是如何解决的?(表示cpp不咋熟悉,简单说了两句印象中的区别,提到了垃圾回收)
5、Java垃圾回收步骤?为什么这么设计?(讲了一大堆,分析了性能)
6、HashMap和ConcurrentHashMap的区别?
7、b树和b+树的区别?
8、了解有那些琐?分别在哪些场景使用?加锁的目的是什么?
9、Executor框架,线程池相关?工作过程?
10、Spring框架是用于解决什么问题?和微服务有什么联系?
11、在启动spring过程中会发生什么事情?
12、在线连接写题:流式数据,可实时获取当前中位数。即写一个类,其中put()方法用于新增数据,get()方法返回当前中位数。(先给了O(nlogn)的解法,优化到O(n),面试官说有更优的O(logn)没想出来就算了,把O(n)的实现了,表示也还行能用)
13、反问:
(1) 具体部门?
(2) Base?(杭州,说给我转到成都,面试官真好啊)
蚂蚁金服Java开发二面9.16(28min)
考察了三个维度:课程项目+Java技术+数据及相关存储。
面试官说的是川普很亲切,人很好我答不上也捧场的嗯嗯,然后给我解答,面试体验很好。
1、介绍部门及面试流程
2、自我介绍
3、项目相关
4、Java技术
原来的类A类,修改内容后重新加载为A’类。
(1) 同一个class类如何加载两次(答自定义类加载器)
(2) new一个A类实例a,是否能讲a强转为A’类型?为什么?(不能,类信息包括类加载器信息,类加载器不同不能强转)
(3) 如何将a转成a’对象(将a属性get出来,set到a’对象中。可以用BeanCopy组件实现)
(4) BeanCopy如何实现的?或者如果让你去实现会怎么做?(答通过反射获取类属性信息,复制对应属性值)
(5) 反射获取到的属性列表信息是从哪里来的?(答类定义,不知道对不对,百度有人说是编译后的class文件)
5、数据及相关存储
(1) 存储系统有哪几种类型?分别在哪些场景下去应用?(MySQL关系型数据库,Redis是key-value类型的内存存储,oss是对象存储)
(2) 为什么网上存储服务会比本地好?(效率更高,类型支持更多,容量更大)
(3) MySQL关系型数据库的好处?(答可持久化,回Redis也可以。答可靠,作罢)
(4) SQL查询语句:SELECT * FROM A JOIN B ON A.id = B.id。执行过程性能差,原因可能是?(答没有走索引)
(5) 上述SQL语句的执行过程是?哪里需要建立索引(答两个表先进行笛卡尔积,再根据条件检索,在id上建索引)
(6) 在A.id还是B.id上简历索引呢?(两个id都可以建立,不知道对不对)
6、反问
蚂蚁金服Java开发三面9.19(40min)
全场根据项目进行场景题发散。
1、项目介绍
指出业务进行漏洞,质疑项目中创作者角色创作的动机(奖励机制+盈利模式)
2、技术点一:会话保持
如何形成token?形成token的数据是?(答jwt,id+昵称)
如何存token?(解释业务逻辑。答cookie)
【连环问一】
(1) 其他用户使用改浏览器时,如何保护这个cookie?(答加过期时间)
(2) 如何实现过期时间?(答cookie自设置过期时间)
(3) 如果cookie没有设置过期的api,自己如何实现?(答通过存储数据在redis中,通过redis设置过期)
(4) 反驳cookie是balabala没听清,反正就是不对。(又答通过后端MySQL数据库中增加过期列实现)
(5) 反驳这样每次都要走后端,可以实现但不合理。(又答通过在前段多存一个cookie表示token对应cookie的过期时间则两次查询localcookie不用查询后端)
(6) 问这样有什么漏洞?(答cookie不安全,可能被篡改使token长期有效)
(7) ok该问题过
【连环问二】
(1) 如何保护登入时输入密码的安全性?(答将密码通过MD5加密后存储到数据库中)
(2) 这是数据库中,浏览器和网络上如何保护?(答字符串过滤)
(3) 反馈不是问这个,是指网络上被获取的风险,举例如果输入密码是明文容易被截取。(一开始没听懂问题。答在前端也用MD5进行加密,比对时传入加密后的密码)
(4) 这样会有什么问题?(答虽然不能获取密码,但能获取加密后的结果,也能与数据库中的信息比对成功,还是有安全隐患)
(5) 表示对,有和明文一样的风险。(突然懂了,答前段用公钥加密,后端用私钥解密后MD5,后与数据库中信息比对,即使截取由于没有私钥也无法解密)
(6) 好很多,该问题过
3、技术点二:数据库设计
(1) 为什么要用easyExcel导入视频分类而不是直接使用sql语句(答分类目录结构可能发生变化,业务人员用Excel提交新的分类,程序员进行批量导入。在这儿自己挖坑了)
(2) 分类变化时,视频原分类信息出现错误怎么办?(哈哈做的时候没做过上个回答自己挖坑,答如果仅修改分类名则无影响,因为连接的是分类id,如果发生大的变化则将视频放入待分类项并通知发布者进行重新选择后再次上传)
(3) 分类信息的数据库实现?(答通过pid列关联父分类id,一级分类的pid为0)
(4) 视频表中关联的是最小分类还是每一级都存?(答因为该项目只有两级,所以都存了)
【连环问三】
(1) 那如果分类级别是动态的,可能是三级or四级,如何设计存储关联?(答分表)
(2) 反驳会多表查询且union有问题。(答延续之前设计则需多次查询,自指出两种方案都无法一次单表查询得出,各有问题)
(3) 有无方案避免这种问题?(答分类信息单列存储,多级分类存储为多级前缀,转化为字符串匹配问题,只需一次单表查询)
(4) 挺好,但字符串匹配效率低,可以再优化为integer查询吗?(答用数字标识分类,查分类下视频则实质为integer范围查询)
(5) 这样有什么约束?(答integer范围限制)
(6) 问题理解错误,是问业务上约束,比如用0-9数字对应某级下各分类,如果有11个分类呢?(答扩展成两位表示)
(7) 这样需要设计时确定,之后扩展就不行了(答是,需一开始就确定)
(8) ok
4、反问
(1) 岗位工作相关?
(2) 对我的建议?
(3) 结果什么时候出?
蚂蚁金服Java开发hr面9.29(17min)
面试官好像没有提前看简历,对于回答没有追问和深挖,感觉不出结果。
1、自我介绍
2、考研?为什么不考?
3、你所指的独立是什么?
4、Base选择?
5、实习介绍
6、你在实习期间的收获?
7、实习回家之后在干嘛?
8、最近做的项目?介绍项目
9、手里的offer?
10、反问
(1) 新员工培养计划
(2) 您在蚂蚁工作的感受?
(3) 是否可以提前入职?(可以,问我什么时候可以去)
(4) 结果大概什么时候出来?(十月中旬)
#2021届秋招进度交流##面经##面试流程##秋招##面试题目##蚂蚁集团#