首页 课程 师资 教程 报名

2020年百度Java开发面试题目

  • 2019-12-30 14:07:35
  • 2838次 动力节点


2020年百度Java开发面试题目


  1. java 中 volatile 和 synchronized 有什么区别?


  A. volatile 本质是在告诉jvm 当前变量在寄存器(工作内存)中的值是不确定的, 需要从主存中读取;synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。


  B. volatile 仅能使用在变量级别;synchronized 则可以使用在变量、方法、和类级别的。


  C. volatile 仅能实现变量的修改可见性,并不能保证原子性;而 synchronized则可以保证变量的修改可见性和原子性。


  D. volatile 不会造成线程的阻塞;synchronized 可能会造成线程的阻塞。


  E. volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编译器优化。


  2. 有了解 java 的原子类?实现原理是什么?


  答:采用硬件提供原子操作指令实现的,即 CAS。每次调用都会先判断预期的值是否符合,才进行写操作,保证数据安全。


  3. spring 主要使用了哪些?IOC 实现原理是什么?AOP 实现原理是什么?


  答:spring 主要功能有 IOC,AOP,MVC 等,IOC 实现原理:先反射生成实例,然后调用时主动注入。AOP 原理:主要使用 java 动态代理


  4. mybatis 有了解吗?它与 hibernate 有什么区别?项目中,你会选哪个?


  答:两者都是轻量级 ORM 框架,hibernate 实现功能比较多,通过 HQL 操作数据库,比较简单方便,但 hibernate 自动生成的 sql 相长,不利测试和查找原因。复杂 sql 时,编写比较困难,同时性能也会降低。mybatis 是半自动化,手动编写 SQL 语句,同时提供丰富的参数判断功能。sql 语句较清晰,可以直接进行测试,性能也较好,操作起来非常简单。同时 hibernate 容易产生n+1 问题。hibernate 学习成本较 mybatis 高。国内一些大公司基本上使用mybatis


  5. 说说数据库性能优化有哪些方法?


  答:使用 explain 进行优化,查看 sql 是否充分使用索引。避免使用 in, 用exist 替代,字段值尽可能使用更小的值,任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。使用连接查询 (join) 代替子查询。


  在表的多列字段上建立一个索引,但只有在查询这些字段的第一个字段时,索引才会被使用。


  6. linux 命令熟悉?查看某个线程命令是什么?查看整个机器负载命令?文件内容快速查找命令是什么?


  查看线程:ps -ef|greptomcat


  查看负载:top


  文件内容查找:vi /aa test.txt 或者先打开文件,再查找: vi test.txt /aa


  7. 缓存框架有使用过哪些?memcache 和 redis 有什么区别?项目中,怎么去选择?


  答:缓存有: ehcache,memcache 和 redis;


  memcache 和 redis 等区别:


  1、 Redis 和 Memcache 都是将数据存放在内存中,都是内存数据库。不过 memcache 还可用于缓存其他东西,例如图片、视频等等。


  2、Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set, hash 等数据结构的 存储。


  3、虚拟内存 --Redis 当物理内存用完时,可以将一些很久没用到的value 交换到磁盘


  4、过期策略 --memcache 在 set 时就指定,例如 set key1 0 0 8, 即永不过期。Redis 可以通 过例如 expire 设定,例如 expire name 10


  5、分布式 -- 设定 memcache 集群,利用 magent 做一主多从; redis可以做一主多从。都可以一主一从


  6、存储数据安全 --memcache 挂掉后,数据没了;redis 可以定期保存到磁盘(持久化)


  7、灾难恢复 --memcache 挂掉后,数据不可恢复; redis 数据丢失后可以通过 aof 恢复


  8、Redis 支持数据的备份,即 master-slave 模式的数据备份。项目使用选择:redis 是单线程实现,若需要使用控制某些并发状态时,可以使用 redis. 项目中需要使用 复杂的 list,set 操作时,同时可以对数据进行持久化。当存储数据较大时,如 100k 以上,那 memcache 性能较好,在多核上,memcache较好


2020年百度Java开发面试题目


      以上就是动力节点Java培训机构小编介绍的“2020年百度Java开发面试题目”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


相关推荐


最新最全java面试题及答案(初级到高级)


史上最全的中高级JAVA工程师面试题及答案汇总


Java高级开发工程师面试题


2019史上最全java面试题题库大全800题


哪有资深java工程师面试题


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交