百度云java社招一面面经

百度云java社招一面面经与个人总结
1、首先是项目部分,问的比较细。这部分没什么参考价值,忽略。
2、如果一个对象有多个方法加了synchronized,那么该对象有几把锁
对象锁是在一个类的对象上加的的锁,只有一把,不管有几个方法进行了同步。
这些同步方法都共有一把锁,只要一个线程获得了这个对象锁,其他的线程就不能访问该对象的任何一个同步方法。
3.NIO与AIO的区别以及各自的作用
Java NIO :同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,
NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器。
AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器。
4.IOC的实现原理
Spring的IOC实现原理就是工厂模式加反射机制,通俗来讲就是根据给出的类名(字符串方式)来动态地生成对象,这种编程方式可以让对象在生成时才被决定到底是哪一种对象。
把IOC容器的工作模式看做是工厂模式的升华,可以把IOC容器看作是一个工厂,这个工厂里要生产的对象都在配置文件中给出定义,然后利用编程语言提供的反射机制,根据配置文件中给出的类名生成相应的对象。
Spring支持三种依赖注入方式,分别是属性(Setter方法)注入,构造注入和接口注入。
5、反射的原理
反射首先是能够获取到Java中的反射类的字节码,然后将字节码中的方法,变量,构造函数等映射成 相应的 Method、Filed、Constructor 等类
6、数据库调优思路的思路。
1).慢查询的开启并捕获
2).explain+慢sql分析
3).show profile查询sql在mysql服务器里面的执行细节和生命周期情况
4).sql数据库服务器的参数调优
7、开放性的问题,如何提高系统QPS。
这个问题我感觉大致可以从这几个方面
1)、单机版能承受并发的能力是有限的,我们可以进行系统拆分,分开部署在不同的机器上。
2)、用消息队列削峰。系统不至于因为瞬间的流量挂掉。并且可以配合使用限流与服务降级。
3)、用redis什么的做缓存。
4)、数据库分库分表,建立合适的索引。#百度##社招##面经##Java工程师#
全部评论
给老哥点个赞
点赞 回复 分享
发布于 2019-12-23 21:03
👍
点赞 回复 分享
发布于 2019-12-24 07:58
感谢分享面经!欢迎参加过社招的牛友发社招面经拿京东卡!~ -------------------- 活动:社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡
点赞 回复 分享
发布于 2019-12-24 14:47

相关推荐

13 108 评论
分享
牛客网
牛客企业服务