本篇博客记录一下自己面试的经验。面试技巧:不卑不亢,积极应对(即使没有专门去准备面试也可以应对自如)。
1.平时多积累
数据结构:List、LinkedList、Collection、HashMap等基础原理。
了解JVM配置:JVM的运行原理和调优。
关于编写文档能力:需求文档、功能设计文档、数据库设计文档、接口设计文档,PPT演讲或培训。
产品管理能力:Axure RP、PPT、多与用户沟通交流了解真实可靠的需求。
项目管理能力:Project、Visio、UML、项目人员的协调和安排,团队建设。
行业积累:如Finacial(金融)、TMS、OMS、EBS(电商)、WMS等行业的经验。
架构积累:LAMP(Linux+Apahce Server +Mysql+php)快速建站方案,Nginx负载均衡解决方案、微服务架构。
设计理念:SaaS(软件即服务)、PaaS(平台即服务)、IaaS(基础设施即服务)、IterfaceAAS(接口即服务)、XaaS等等。
全文探索:Lucene(Solr)等,不一 一列举了。
2.面试经验实践问答
2.1谈谈HashMap的原理,你了解hash碰撞吗?
2.2谈谈Spring的底层是通过什么机制工作的?
2.3如何保证接口在数据库不同版本的下都能很好的工作?
2.4怎样避免新用户还在使用老的接口版本?
2.5同一个应用中怎样实现不同版本的接口都能稳定的工作,即如何管理多个版本的接口调用?
2.6如何保证接口是最新的版本,如果接口有修改和差异怎么处理?
2.7你们的接口都是直接暴露给使用方,而无须校验和鉴权?
2.8如何保证接口不重名,你会怎么做?
2.9数据库压力增加、超负荷运转的时候你会怎么设计数据库,会采用分表分库、分片、还是集群?
2.10如何处理和避免多线程数据不一致的情况?
2.11接口之间的交互意味着有分布式事务处理,一旦处理失败你们会怎么做?
2.12如何发布安全可靠的API?
2.13如何避免接口被重复调用,如何去重和验重?
注:先将问题抛出来,看大家会怎么回答!