查看原文
其他

无法忘怀的一次百度电话面试

点击上方的终端研发部右上角选择设为星标

每日早8点半,技术文章准时送上

公众号后台回复“1024”,获取作者独家秘制精品资料

者:程序猿小卡_casper

前言

匆匆忙忙吃完早餐,找了僻静的角落坐下。看看手机,8:45左右,离电话面试还有大概15分钟。心里有些紧张,毕竟是大厂的面试,要求肯定很严格,不知道待会会问什么问题。内心突然有些懊恼,应该提前多做些准备的。

如期而至的电话

时间一分一秒地流逝,心跳越来越快。9点整,上海的电话如期打来。双方确认了身份后,连自我介绍都不用,直接就进入了技术面试环节。有点出乎意料,在我彼时的设想里,第一个环节应该是自我介绍才对。
没有太多的时间去诧异,电话那头,面试题一个接一个地抛了过来。我把耳机听筒紧紧地贴着耳朵,生怕听不清面试的题目,或者错过关键的信息。其时,脑子飞快地转着,想着如何回答面试官的题目,以及怎么更有条理地组织我的回答,下面就是一面面试问的题目。

Java面试题目:

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

Web方面:

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

数据库

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

JVM

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

网络:

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

容器方面

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

并发

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

nio、bio

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

中间件

  1. redis
  2. rabbitMq
  3. memcached等的使用场景和设计原理

redis:

  1. redis部署方式。
  2. redis怎么加入节点
  3. redis持久化。
脑子里一直嗡嗡响,也不知道过了多长时间,面试官突然安静了下来。顿了大约有10秒,那边说:“技术的问题也问得差不多了,就先到这里。你这边有没有什么问题想问的?”
我如释重负,赶紧喘了口气,然后问了几个我之前已经准备好的问题,包括面试部门的工作,员工培训机制,学习建议等,面试官也一一解答。
感觉过了好长时间,其实也可能只有十来秒。听筒里再次传来面试官的声音,不知道是不是心理作用,感觉面试官的语调跟之前有些不同。
“这样,我提前把面试结果告诉你,你一面通过了。在你之前也面了好多人,到目前为止,你是回答得最好的。二面具体时间稍后通知。加油哦,好好准备下一轮面试。”
当一面结束时,一切都显得不那么真实。几分钟前还在着急忙慌地接招,随着电话的挂断,周遭又安静了下来,安静到感觉连脑袋都变得有些迟钝。
但眼前的面试还没有结束,真正的挑战也许才刚刚到来,后面还有二面、三面、N面在等着我。开场的这一仗打得有点过于顺利,接下来可能就是硬仗了。
也许,抛开侥幸,心怀谦逊地准备,才能得到幸运之神的垂青。
节后,收到了来自百度的电话,简单明了,商定了电话面试的时间。
经历了第一次的电话面试后,这次的等待从容了很多。也许是因为,第一次电话面试,那个年轻面试官对我的评价,让我稍微有了一些自信。
上课,看书,逛逛技术博客,生活的旋律依旧单调。
触不及防的硬仗
同样的,几句话确认身份后,面试官直奔主题,这倒是不令人意外。
从声音上听来,这次的面试官年龄稍微大些,语调也显得比之前更沉稳和严肃,让人不免心生敬畏。接下来是二面时的题目和三面题目

百度二面面试题目

  1. 手撕字符串转int
  2. 数据库事务隔离级别
  3. spring 事务
  4. 数据库索引失效的场景
  5. 组合索引(A,B)若查询B列是否用到了索引
  6. 如果A是string类型,而查询的时候是1314151617 用到了索引吗?能查到这条数据吗?
  7. 数据库怎么实现乐观锁?
  8. redis pipeline了解吗?
  9. 秒杀场景?怎么实现。redis怎么限流,限流算法。
  10. redis实现队列、实现优先级队列。
  11. 分布式锁。

百度三面面试题目

  1. JVM 内存分哪几个区,每个区的作用是什么?
  2. 简述 java 垃圾回收机制
  3. 除 了 ReetrantLock, 你 还 接 触 过 JUC 中 的 哪 些 并 发 工 具
  4. 请 谈 谈 ReadWriteLock 和 StampedLock。
  5. MyISAM 表格将在哪里存储,并且还提供其存储格式?
  6. Mysql 驱动程序是什么?
  7. 说说 Dubbo 的实现原理
  8. RPC 的实现原理是什么
  9. ActiveMQ 服务器宕机怎么办?
  10. Mybatis 是如何进行分页的?分页插件的原理是什么
  11. NoSQL 数据库有哪些类型?
  12. 更新操作立刻 fsync 到磁盘?(注意,尽管 fsync 选项在命令行和经
  13. 过 getLastError_old 是有效的)(译者:也许是坑人的面试题??)。
  14. CAS 与 synchronized 的使用情景

总结

最近,各大公司开始了招聘了,很多人已经开始在准备面试了,我很难估算一个人要掌握这所有的题目有多难。但是我觉得,如果你是一个有一定的计算机基础知识并且有一定的Java经验。比如一个学习还不错的大三学生。大概可以用半年左右的时间就可以掌握这里面的所有题目。别问我为什么,因为我试过。

阅读更多

刚入行不久,如何写出优雅的Java代码?
阿里的离职率真的是互联网大厂里最低的吗?
重磅!阿里内部偷师Android的开发规范文档重磅!Vue 3.0源代码公布后,究竟有哪些变更?
吵翻天!税后年薪170万的阿里P8程序员征婚被喷到死!

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

喜欢就给个“在看” 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存