百度高级java工程师面试59题

百度一面面试题目

Java面试题目:

  • Java读取一个文件, 有哪些方法, 考虑性能, 用哪一个类
  • BIO, NIO, AIO区别
    Java 类加载机制
    为什么使用双亲委派模型
    NIO的组件, Selector
    什么是序列化, IO的序列化方式, 为什么需要序列化(包括在网络传输的情况下)
    Error和Exception区别
    RuntimeException和非RuntimeException区别
    什么叫线程安全, 保证线程安全的方法
    加锁的方式, synchronized作用在方法上和代码块区别
    synchronized(this)和synchronized(Xx.class)区别

    Web方面:

    Spring AOP实现原理
    一个页面, 一个提交按钮, 如何防止重复提交, 我说验证码, 还有其它方式吗?
    ajax实现跨域请求(前端或者后台实现方法)
    cookie和session区别
    forward和redirect区别

    数据库

    你建过索引吗? 建索引的原则
    索引的类型, 如主键索引
    查看SQL执行计划
    有十万条数据, 写SQL语句查询其中某字段较大值的几条数据
    子查询与关联查询的区别

    JVM

    你用过的JVM命令有哪些
    如果一个程序发生OOM, 该怎么处理
    JVM内存模型
    JDK7与JDK8的JVM内存模型区别
    回收算法
    回收器
    虚拟机client和server的区别
    对象和引用之间一般用什么连接?句柄池的作用是什么。

    网络:

    HTTP1.0与HTTP1.1区别
    TCP与UDP区别

    容器方面

    介绍线程安全的list(copyonwritelist)
    线程安全的map,具体是怎么实现的,与Hashtable什么区别。
    CAS

    并发

    知道的线程池(ThreadPoolExecutor属于一类,forkjoin知道吗)
    线程池怎么自己去实现?给你一个Runnable、一个容器怎么实现。
    AQS中线程等待怎么做的(线程挂起状态怎么做的)?

    nio、bio

    阻塞非阻塞的区别?
    异步和同步的区别?异步是使用的内核级线程还是用户态线程。
    AIO在Java中应用到了吗?

    中间件

    redis
    rabbitMq
    memcached等的使用场景和设计原理
    redis:
    redis部署方式。
    redis怎么加入节点
    redis持久化。

    百度二面面试题目

1.手撕字符串转int

2.数据库事务隔离级别

3.spring 事务

4.数据库索引失效的场景

5.组合索引(A,B)若查询B列是否用到了索引

6.如果A是string类型,而查询的时候是1314151617 用到了索引吗?能查到这条数据吗?

7.数据库怎么实现乐观锁?

8.redis pipeline了解吗?

9.秒杀场景?怎么实现。redis怎么限流,限流算法。

10.redis实现队列、实现优先级队列。

11.分布式锁。