2018年5月Java面试总结

本文总结了作者在阿里、百度等公司的技术面试中遇到的问题,涵盖了Java基础、多线程、数据库、中间件等多个方面,为准备面试的读者提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5月底面试了一波,但是效果不尽人意。总结一下面试的情况。

面试的公司有阿里,百度,汽车之家,58(两次),链家,36氪。。。

先说问题,下一篇再来总结下答案。
阿里:
1. 了解hashmap吗?介绍一下。是不是线程安全的?concurrentHashmap和hashTable有什么区别?
2. 线程安全的集合有哪些?如果用list呢,线程安全的list有哪些呢?
3. 在开发中遇到过classNotFound和classNotDefined这类的错误吗?这些错误是如何产生的?如何解决?或者你说下什么情况下会出现这种错误。
4. 刚才谈到类的加载过程,你怎么能看到类的加载过程。
5. 在Tomcat的运行过程中,我想知道类的加载过程,容器到底加载了哪些class,如何去看?
6. 在HashMap种,使用对象作为key,需要注意什么问题?
7. NoSQL,MySQL都用过吧,他们有什么区别和关系。在什么情况下用NOsql,什么情况下用Mysql。Nosql和Mysql最关键的差异在哪里?也就是说关系型数据库和非关系型数据库最大的差别在哪里?
8. 你对事务的理解。
9. 悲观锁和乐观锁的概念介绍一下。
10. 项目种有用到dubbo是吧,你能简单介绍下dubbo的原理吗?
11. 你是否独立承担过一个项目?或者你在一个项目里面技术上有过比较大的贡献,能介绍一下吗?
12. 这个是根据项目引申过来的,如果服务器不允许你上传文件或者写文件更改文件,你如果实现将一个文件的修改内容加载到内存里?
13. 说下你项目中,你所作的一些亮点。
14. 用过MQ吗?MQ用在什么场景?如何解决消息的重复投递或者消息丢失的问题?
15. 根据你的简历,能说一下项目中你的亮点,攻克的难点,是如何成长的?有没有经历过技术难点的突破?比如性能调优啊等等。
16. A模块调用B模块,给B模块500毫秒,如果B模块没有返回,A就不要B模块的结果直接往下走。
17. 可重入锁用过吗?
18. spring AOP是如何实现的?
19. 淘宝会产生大量的订单号,如果你来设计,你会怎么设计订单号?
百度:

  1. JVM了解吗?类加载能说一下吗?
  2. 多线程了解吗?说一下线程池吧。
  3. Linux常用的命令了解吗?
  4. dubbo能大概讲一下,服务发现,故障处理吗?
  5. reddis了解吧,用redis主要做什么?
  6. 数据库和redis如何解决不一致的问题?就是一致性的问题。
  7. Spring AOP是如何实现的。说下原理。
  8. 数据库索引的数据结构。B-tree,B+tree 说一下区别。为什么使用B+tree的数据结构?
  9. 我新建给一个类 来继承String类可以吗?
  10. 值传递和引用传递有什么区别?
    5.21面试总结:
  11. zookeeper挂掉,生产者消费者还能通信吗?如果能怎么通信的?
  12. 手写 申明一个索引。
  13. sql执行慢,如何查看是否用到了索引,如何查看是否是索引导致的。
  14. spring如何加载上下文?如何通过一个bean的接口来加载上下文。
  15. spring事务,隔离级别。如何配置。
  16. @autowired,@resource 这两个注解的区别。
  17. springmvc 如何通过注解将返回的list类型转化为json类型。
  18. b-tree, b+tree,红黑树 介绍一下。(问了好多次)
  19. hashmap是是如何解决碰撞的。
  20. hashmap和hashtable的区别。除了线程安全,还有什么
  21. 读写锁,读写分离锁。
  22. 线程池底部调用的是什么方法。如果不用线程池,自己如何设计。线程池参数说明
  23. redis 销毁策略。json往redis存的话,以什么格式存。
  24. reentrantlock 原理,使用
  25. java.util.concurrent.atomic包介绍一下。
  26. list数组如何对存入的对象的某个字段进行排序。
  27. session 生命周期。sessionid存在哪里?
  28. 分布式锁,分布式事务。
  29. 事务的回滚机制。
  30. springmvc 三层 哪个是单例的
  31. redis端口号,mq端口号。
  32. mq是如何解决重发消息和少发消息的。
  33. sql like语句如何使用索引。
  34. dubbo 生产者消费者通信的过程。
  35. springaop 动态代理的模式是怎么实现的。
  36. zk事务顺序的一致性。
  37. happens-before
  38. Java内存模型(不是运行内存)
  39. cas 和atomic包
  40. NIO derectbuffer.
  41. AIO
  42. springmvc哪个注解可以获取url上的路径
  43. spring加载过程。spring 加载容器的扩展点。比如在已经加载完后,如何再加载几个bean。
  44. 网络攻击(CSRF、XSS)
  45. 红黑树、AVL树区别
  46. url到页面的过程
  47. 引擎对比(InnoDB,MyISAM)
  48. dubbo缺点,改进
  49. 线程池,线程多了怎么办?排队?
  50. dubbo线程池,线程模型。
  51. concurrenthashmap扩容时,多线程的情况。
  52. 如何防止http伪请求。
  53. 如何维护一个变量的原子性。
    2018.0601面试总结
  54. 手写lru算法
  55. 手写快排算法
  56. 手写步数算法,给一个整数数组,每个整数代表向前跳跃的步数,求跳到最后一步需要跳几次?(动态规划问题)
  57. 聚簇索引非聚簇索引的区别介绍一下
  58. drds多维度查询。如果我分库使用id来区分的,如果我想查另个一个属性比如年龄,如何查询?
  59. zookper为啥有观察者
  60. 索引为啥用b+树
  61. 2个G得数据如何排序,无法一次性读入全部。
  62. spring加载过程
  63. 线程池介绍
  64. 多个子线程调用问题,等待每个结果,然后往下走。写出代码。
  65. 手写生产者消费者问题。(假如是一个生产者和一个消费者)。
  66. 写库问题。由于网络问题如何保证重复操作,并发环境的写操作。
  67. mq推送,拉取有何区别
  68. 如何自己设计一个rpc
  69. mysql如何解决幻读问题
  70. 线上oom了如何排查
  71. 线上cpu内存爆满如何排查。

以上就是面试中遇到的问题。阿里的擅长从项目中展开来问。还是要多了解基础原理。

8月19号 阿里旗下河马电话面试:

  1. 首先自我介绍。目前工作内容。挑几个点详细讲下,项目中有什么贡献,有深度的工作点介绍下。
  2. 你们管理后台的权限是怎么做的?
  3. 如果抛开shrio权限框架,你会如何设计权限控制。或者你讲一下shrio框架做了哪些事。(我回答得是把用户进行分组,然后抽象出系统得目录,把目录挂载到某个用户上面就是做了权限得控制。然后对方跟我说这只是系统权限模型得分析,现在只是关系,模型有了。接下来有了下面得问题)
  4. 权限框架是如何通过接口来对用户进行鉴权的?(我回答通过用户得唯一uid,来鉴权。
    对方:那请求里面会包含这个uid嘛?
    我:如果是系统用户,系统肯定会分配一个uid。
    对方:你在访问系统接口中肯定有一个请求体连接,这个链接中包含了哪些参数,然后对用户进行了鉴权。
    我:会包含本身得一个信息比如uid。
    对方:那是不是说我在请求体中修改uid,用一个别人得uid,是不是就可以更换用户权限了?
    我:那就要通过加密得方式来访问,通过uid+密钥进行加密得方式来访问,达到防治用户私自更换uid得方式来访问系统。)
  5. shrio框架具体使用过吗?框架是在什么时候做得鉴权?(我回答是通过filter进行得鉴权)
  6. 那filter什么时候会被触发?
  7. spring MVC 从用户访问链接开始,都发生了什么,具体讲一讲关键节点(我回答了dispatcher,hadlermaping等等),都大概做了什么事情,最终落到了逻辑代码上。
  8. controller 中结果返回时,filter会对结果进行处理吗?
  9. 如果现在有这样一个需求:我现在要对返回得结果风格保持统一,每个返回得结果都包含了相同得一部分信息,比如一部分时系统信息,一部分时业务信息,该如何做?(我回答是,在返回时,调用同一个writeresponse方法,在这个方法中添加固定得系统信息。对方:不通过这种方法还有其他方法吗?我:通过过滤器来做。)
  10. 现在得一个需求想对所有得请求的入参和出参操作打印日志,该怎么做?(我回答用springAOP来做。对方:那你讲下springAOP吧。)
  11. springaop有两种代理模式了解吗?什么时候使用JDk代理,什么时候使用另外一种。
  12. jdk动态代理用过吗?
  13. activiti工作流在你项目中是怎么用的?activiti工作流是如何描述流程节点呢?你的业务中有很多状态,流程变化,这个东西activiti是如何知道的?不同的角色根据不同的状态做一些事情,activiti是如何去描述的。(我回答说是通过activiti23张表来描述的,比如回退的话,去查history表)
  14. 如果说我不使用activiti,针对复杂的状态流转如何去做?或者说,先不考虑很多角色,比如就一个角色,很多个状态,比如a状态到c状态,再到d状态。(我回答通表来描述,每新增一个操作,在表中就记录一下状态。这样就可以回退啊什么的。对方:你的状态变更落在了数据库里,每次状态流转前,你都会去查库,如果状态变更很频繁怎么办?是一个高并发请求怎么办?)
  15. 对mybatis了解过吗?为什么调用的是接口,接口的实现是通过xml的。为什么可以这么做呢?
  16. 分页查询是怎么做的?
  17. drds分库分表的原理?是根据什么分库分表的?针对哪些表去分库分表的?现在有一个订单表,预估量会很大,我想提前做分库分表,你觉得我应该用哪个字段来做分库分表?为什么?(我回答得时间点,但对方觉得不太满意)用时间点,或者订单,那我c端得查询怎么办?比如说C端用户有商品列表,他怎么查呢?如果用商品id分库分表,那不同得商品可能落在不同数据库实例上,那如果这些商品属于同一个用户怎么办?(这个问题就是说,分库分表用得一个维度,但是我查询用的另外一个维度,这个问题如何解决?)
  18. 单表查询时?如何优化这个查询得性能(我回答用索引)
  19. mysql innoDB有几种索引?索引类型有哪些?(比如主键索引,唯一索引,还有呢?)你平常建索引时,建什么类型得索引?以订单表为例,你会在哪个字段建立索引?
  20. 我现在查询条件有三个条件=a,=b,=c都是等于查找也就是精确查找,如果数据库有一个索引是a,那这个查询能够被优化吗?这个查询能用到索引吗?
  21. innodb索引有那两种数据结构?b+树,b树,有什么区别?为什么要用b+树。
  22. 数据库得索引是不是越多越好,为什么?我有一张表有7,8个条件,那我每个字段都加上索引可以吗?
  23. 数据库得锁有了解吗?
  24. 数据库资源得锁定是怎么锁定得?行级锁怎么使用?数据库什么时候使用行级锁,什么时候使用表级锁?我以任意得查询条件,命中了多条记录,那都是行级锁吗?
  25. jdk使用得什么版本?schorized在jdk6之后有哪些优化,了解吗?
  26. jdk8得新特性了解吗?lamda表达式了解吗?使用过吗?知道有什么好处吗?
  27. 方法引用了解吗?使用过吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值