拼多多Java后端团队面试题:epoll+集群+事务隔离+Kafka+分布式等

 

拼多多Java后端团队面试题:epoll+集群+事务隔离+Kafka+分布式等

 

一面

  1. 自我介绍
  2. 介绍一下mysql索引?为什么用B+树?
  3. 网络IO模型?什么是多路复用IO?select和epoll的差别?select具体过程?
  4. java类加载机制?双亲委派模型的好处?
  5. 进程和线程的区别?线程是不是越多越好,为什么?操作系统怎么调度的,调度算法?java中cpu调度是线程还是进程?
  6. 数据库事务?隔离级别?
  7. java线程变量怎么实现的?内存模型?
  8. 手撕代码
  9. 用数组模拟循环链表
  10. 堆排序实现
  11. JAVA并发包组件了解多少
  12. 线程的一个状态转换图
  13. HashMap和HashTable以及CocurrentHashMap详细说明
  14. SpringMVC的整个执行流程

二面

  1. 自我介绍
  2. 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?怎么解决分库分表?
  3. 数据库事务特点?事务隔离级别?项目中的事务实现?脏读、不可重复读、幻读各举个例子?
  4. Spring bean的生命周期?默认创建的模式是什么?不想单例怎么办?
  5. 谈谈Kafka和ZooKeeper了解情况?
  6. 设计模式,单例模式,怎么保证线程安全?锁效率太低,怎么提高效率?CAS?CAS本质是什么?什么是原子性?Compare and Swap,为什么能保证原子性(涉及到CPU指令)?分布式锁?
  7. 还有什么设计模式?工厂模式有几种,都讲讲?
  8. 数据库表怎么设计的?数据库范式?设计的过程中需要注意什么?enum类型的值一般怎么存?如果有一个十几位的小数为了不丢失精度怎么存?tinyint几个字节,int几个字节?

三面

  1. 项目介绍
  2. Redis简要介绍下,有哪些常用的数据结构?
  3. Redis是单线程的?Redis为什么查询数据这么快?
  4. Redis并发竞争key如何来解决?
  5. 有接触过哪些消息队列中间件?如何来选型?
  6. 谈谈你的SOA以及微服务的理解?
  7. 具体谈谈Spring Cloud服务和注册?
  8. 分布式场景面临的最大挑战是什么?
  9. 分布式场景数据同步如何来解决?

以上就是拼多多后端Java团队面试题,以下最新总结的最全2019阿里集团资深Java必考题范围和答案,仅用于参考~


下面是一个我长期积累出来的系统学习图谱,当然我也有一个专门的交流学习群:859729143 点击加入Java架构群。群里每天都有新视频资料更新,每天晚上大牛直播讲课。

分布式专题

金三银四过后整理出的阿里最新Java程序员面试题目(2018.4月)

微服务架构

金三银四过后整理出的阿里最新Java程序员面试题目(2018.4月)

性能优化

金三银四过后整理出的阿里最新Java程序员面试题目(2018.4月)

双十一电商项目实战

金三银四过后整理出的阿里最新Java程序员面试题目(2018.4月)

源码分析

金三银四过后整理出的阿里最新Java程序员面试题目(2018.4月)

团队协作

金三银四过后整理出的阿里最新Java程序员面试题目(2018.4月)

 

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Epoll+线程池的工作原理如下: 1. 单线程创建epoll并等待,有I/O请求(socket)到达时,将其加入epoll并从线程池中取一个空闲工作者线程,将实际的业务交由工作者线程处理。 2. 当多个任务到来时,Epoll及时响应并将任务下发给特定的处理线程,完成对应的任务。 3. 如果只用单线程进行listen轮询监听的话,效率上实在是太低。而借助epoll的话就会很完美的解决这个问题。 4. 使用线程池的缘由是为了避免频繁创建和销毁线程,提高线程的复用率和效率。 代码示例: ```python import socket import threading import queue import select # 定义线程池类 class ThreadPool: def __init__(self, max_workers): self.max_workers = max_workers self._workers = [] self._task_queue = queue.Queue() self._init_workers() # 初始化线程池 def _init_workers(self): for i in range(self.max_workers): worker = threading.Thread(target=self._worker) worker.start() self._workers.append(worker) # 工作者线程 def _worker(self): while True: try: func, args, kwargs = self._task_queue.get() func(*args, **kwargs) except Exception as e: print(e) # 提交任务 def submit(self, func, *args, **kwargs): self._task_queue.put((func, args, kwargs)) # 定义服务端类 class Server: def __init__(self, host, port, max_workers): self.host = host self.port = port self.max_workers = max_workers self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server_socket.bind((self.host, self.port)) self.server_socket.listen(5) self.thread_pool = ThreadPool(self.max_workers) # 处理客户端请求 def handle_request(self, client_socket, client_address): print(f"Connected by {client_address}") while True: data = client_socket.recv(1024) if not data: break client_socket.sendall(data) client_socket.close() # 运行服务端 def serve_forever(self): print(f"Server is running on {self.host}:{self.port}") while True: client_socket, client_address = self.server_socket.accept() self.thread_pool.submit(self.handle_request, client_socket, client_address) # 运行服务端 if __name__ == '__main__': server = Server('localhost', 8888, 10) server.serve_forever() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值