大厂题库

1.聚美

Java内存管理
HashMap HashTable ConcurrentHashMap LinkedHashMap的区别
异步模式的用途和意义
写字符串反转函数
final static volatile等修饰符的用法
社交网站中的“私信”功能,要求高并发、可扩展等等。 画一下架构图,和简单说明。
常用的设计模式,并重点说明观察者模式。
MVC模式,即常见的MVC框架
消息中间件的用途,和自己用过的一些消息中间件。
Mysql的索引类型
一般索引和联合索引内部机制上的区别 elasticsearch的倒排索引(得到一个信息,目前大数据企
业基本上都开始采用ElasticSearch了) redis的list结构相关的操作
redis cluster的应用和优劣势
给定一个不知道长度的(可能很大)输入字符串,设计一种方案,将重复的字符排重
常用的排序算法,快排,归并、冒泡。 快排的最优时间复杂度,最差复杂度。冒泡排序的优化方案。
二分查找的时间复杂度,优势。
一个已经构建好的TreeSet, 怎么完成倒排序。
大概说一下多线程架构模式,并继续追问了reactor架构模式。各类模式的优缺点。
聊了下曾经参与设计的游戏服务器的架构。
应用服务器怎么监控性能,继续追问,对各种方式的对比。 redis使用有什么注意点没有,比
如redis的1k问题、 redis键的推荐命名方式等。 非常多个线程(可能是不同机器),相互之间需要
等待协调,才能完成某种工作,问怎么设计这种协调方案。 java同步机制的wait和notify
第二轮面试:
介绍了做过的两个项目的架构图。
从0-1组建项目团队怎么组建。
技术选型怎么选。
如何满足需求。
自我感觉笔试题答的如何, Linux简单命令。
作为leader, 在开发过程中,有木有什么规范。

2.唯品会

1.hashmap为啥不安全(这个忘记了)
2.concurrenthash实现(默认容量,什么时候扩容,怎么 扩容)
3.线程池(包含什么, core、 max联系)
4、如何实现负载均衡,有哪些算法可以实现?
5.synchronized原理
6.volatile原理
7.jmm(主内存、工作内存【缓存行什么的】、 happens-before、)
8.有哪些 无锁数据结构?无锁实现的原理?
9.设计模式(装饰器设计模式、代理模式、单例模式、工厂模 式(3种))
10.dubbo设计思路、 netty原理
11.一次rpc请求的过程
12.MySQL怎么创建合理索引、索引怎么优化?
13.b+tree怎么分裂、什么时候分裂、为什么是平衡 的?
14.MySQL事务实现原理, ACID实现原理
15.MySQL怎么优化table scan?(扫描区,因为区是连续的64个页,可以避免随机扫描)
16.算 法:有3n+1个数字,其中3n个中是重复的,只有1个是不重复的,怎么找出来?(递归方式)
17.如果还问的话,可能会问的(怎么接收一个网络包,怎么优化文件io、 网络io, 建议我多看io和
网络方 面的资料)

3.百度:

MySQL InnoDB存储的文件结构
索引树是如何维护的?
数据库自增主键可能的问题 Redis的并发竞争问题如何解决了解Redis事务的CAS操作吗 分析线程
池的实现原理和线程的调度过程
动态代理的几种方式
Spring AOP与IOC的实现
为什么CGlib方式可以对接口实现代理?
RMI与代理模式
Dubbo的底层实现原理和机制
描述一个服务从发布到被消费的详细过程 算法方面考察了一个简单的数组就地去重问题,用丢弃数组
尾部元素的方式实现 分布式系统怎么做服务治理
接口的幂等性的概念
Maven出现版本冲突如何解决
JVM垃圾回收机制,何时触发MinorGC等操作
新生代和老生代的内存回收策略
Eden和Survivor的比例分配等
Synchronized和Lock的区别

4.阿里巴巴:

JVM内存分代
Java 8的内存分代改进
深入分析了Classloader, 双亲委派机制
JVM的编译优化
对Java内存模型的理解,以及其在并发中的应用
指令重排序,内存栅栏等
HashMap的并发问题
了解LinkedHashMap的应用吗
在工作中遇到过哪些设计模式,是如何应用的

5.优酷土豆:

TCP/IP协议
长连接与短连接
mapreduce过程
多路归并的时间复杂度
海量url去重类问题
Java NIO使用
倒排索引的原理
对分词技术的了解

6.搜狐新闻:

消息中间件如何解决消息丢失问题
Dubbo的服务请求失败怎么处理
重连机制会不会造成错误
对分布式事务的理解
深入分析几个设计模式

7.58赶集:

HTTP请求的报文格式Spring的事务实现原理 实际场景问题,大量用户数据如何在内存中排序和去重
缓存机器增删如何对系统影响最小,一致性哈希的实现
Redis持久化的几种方式
Redis的缓存失效策略 实际场景问题解决,典型的TOP K问题 实际场景问题,海量登录日志如何排
序和处理SQL操作,主要是索引和聚合函数的应用

8.国美在线

SQL语句编写
MySQL的几种优化
Spring行级锁
Spring衍生的相关其他组件整理
RMI的几种协议和实现框架
BTree相关的操作
数据库锁表的相关处理
考察跳台阶问题

9.京东

第一轮面试:
Java线程池的实现原理
线程是否可以共享。线程池如何实现线程共享的。
JVM的内存结构。
Java锁机制的实现原理(主要是画Monitor示意图)。
Spring怎么配置事务(具体说出一些关键的xml 元素)。
MySQL的索引类型,以及B+树具体怎么存储的,每个节点都存的什么东西。
Redis的数据结构都有哪些。
开闭原则怎么应用。
ConcurrentHashMap的实现原理。
线程的状态图。
之前设计的项目架构图。
数据层分库分表的一些知识。
如果有人恶意创建非法连接,怎么解决。
多线程的内存视图(线程内存、主内存),以及内存可见性。
volatile关键字的理解。
第二轮面试:
编程中自己都怎么考虑一些设计原则的,具体讨论了开闭原则,以及在工作中的应用。
自己最骄傲的项目的详细设计,以及讨论。
缓存数据过期后的更新问题。
如何设计一个类,主要讨论了类粒度的问题。

总结: 对于大公司而言,只要是技术岗的面试,还是比较重视编程基础,包括但不仅限于:现场白板
编程、基本排序和查找算法、 Java基础和并发包相关类,多线程模式、 Socket等等。 工作年限是把
双刃剑,经验越多,别人对你的要求越高,因此,如果你的工作年限和你的工作经验不成比例的
话,很难获取到高级职位。 应聘高级开发职位时,相比较而言,会有更多的开放性问题,这些问题通
常会围绕着简历上的项目展开,越是大公司,就单点的问题越深入,反而不会特别要求你知识的“广
度”。因此, “知识广度是知识深度的副产品”这句话还是很有道理的。 平常做产品或项目的过程
中,一定要总结,不限于技术总结,也包含解决问题的思维方式、教训、方案优劣性的总结

猜你喜欢

转载自blog.csdn.net/qq_25046005/article/details/114630599