深圳雁联社招Java开发工程师面经(一二面)
面前初略的了解了下该单位,应该是做第三方支付金融相关的系统。
要求掌握的技术栈:
服务器,中间件,数据库,缓存及存储方案,线上运维等;熟练掌握主流开发JAVA开发框架,如SpringMVC、Dubbo、SpringBoot及SpringCloud等开源框架
一面主要还是以“基础”为主
- 寒暄认识介绍(略)
- 如何把一段逗号分隔的字符串转换成一个数组?---
- try语句块中有一个return语句,那么紧跟在这个try后的finally{}代码会不会被执行,是return之后还是之前执行?
- String和StringBuffer、StringBuilder的区别
- Arraylist和LinkedList异同
- ArrayList与Vector区别
- HashMap底层实现--------JDK1.8前后有差异
- 创建线程的几种方式。----new Thread(){}.start() new Thread(new Runnable{}).start()
- sleep和wait方法的区别
- 线程池的工作原理和几个重要参数?
- Java容器,同步容器和并发容器?
- JDK1.8采用的红黑树特性,以及采用红黑树的理由而不采用AVL和B树的原因?
- synchronized和java.util.concurrent.locks.Lock的比较。
- AtomicInteger原理,为什么要用CAS而不是synchronized?
- 银行的后端如果出现多人想一个账户大钱的情况,会碰到什么问题?-------------站在后台程序员的角度相当于对数据库的同一个记录更新,并发写操作……进行阐述……
二面以框架产品对项目的应用为主
- springmvc处理请求的流程?
- spring的IOC AOP相关原理
- 数据库索引,底层的实现,B树索引的引入
- Mysql主从同步的实现原理,如何应用B+树
- 数据库的乐观锁、悲观锁------金融产品系统的常客吧,刚好他们公司也在用。悲观锁就是断定一定会发生并发控制下的冲突,每次获取数据做操作时都会上锁,屏蔽一切影响数据完整性的操作。乐观锁就是断定不会有冲突,只在提交时检查数据完整性。
- NoSQL数据库,以及MongDB和Redis使用场景?
- 分布式锁
- 分布式全局唯一ID的实现------------主要从UUID、数据库主键自增、多实例步长自增、Redis生成方案……阐述它们的优缺点,和面试官闲聊的时候,面试官聊了下雪花算法(个人是不太了解)……
- 集群监控所要注意的技术栈指标,如何优化等------
- 上亿级的数据,会面临哪些技术瓶颈挑战,如何解决?------
- SpringBoot、SpringCloudy项目中的应用------
- 谈谈项目中的项目优化从哪些方面入手?--------
- RPC框架原理,dubbo的作用?-------RPC翻译过来就是远程过程调用,阐述下不同的机器中服务调用……。dubbo就是应用而生的一款RPC开源框架,面向SOA(面向服务的架构)分布式架构,提供负载均衡,服务降级……
- 阐述下dubbo的架构?----------------服务提供,服务消费,注册中心,监控中心,服务运行容器……画个草图出来最好。
- 阐述dubbo的工作原理?--------
- Dubbo负载均衡策略--------
HR寒暄……(略)
总结:
个人感觉面试官的问题零散,技术栈的连贯性比较少……
简历定点投岗的时候除了对自己的技术栈亮点要写上外,最好对岗位的要求技术栈也做个前提的准备,这样才能胸有成竹。