拼多多Java面试题、笔试题(含答案)
其他互联网大厂面试题
1:阿里巴巴Java面试题
2:阿里云Java面试题-实习生岗
3:腾讯Java面试题-高级
4:字节跳动Java面试题
5:字节跳动Java面试题-大数据方向
6:百度Java面试题
7:蚂蚁金服Java面试题-中级
8:蚂蚁金服Java面试题-高级
9:京东Java面试题-中级
10:拼多多Java面试题-电商部
11:商汤科技Java面试题
12:中软国际Java面试题-初级
13:唯品会Java面试题
14:携程Java面试题-高级
15:软通动力Java面试题
下载链接:全部大厂面试题及答案PDF
拼多多电商部二面整理
1、并发编程三要素?
(1)原子性
原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要 么就全部都不执行。
(2)可见性
可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立 即看到修改的结果。
(3)有序性
有序性,即程序的执行顺序按照代码的先后顺序来执行。
2、实现可见性的方法有哪些?
synchronized 或者 Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见性。
3、多线程的价值?
多线程,可以真正发挥出多核 CPU 的优势来,达到充分利用 CPU 的目的,采用多线程的方式去同时完成几件事情而不互相干扰。
4、创建线程的有哪些方式?
5、创建线程的三种方式的对比?
(1)采用实现 Runnable、Callable 接口的方式创建多线程。优势是:
编程稍微复杂,如果要访问当前线程,则必须使用 Thread.currentThread()方法。
编写简单,如果需要访问当前线程,则无需使用 Thread.currentThread()方法,直接使用 this
即可获得当前线程。
劣势是:
线程类已经继承了 Thread 类,所以不能再继承其他父类。
1、Callable 规定(重写)的方法是 call(),Runnable 规定(重写)的方法是 run()。
2、Callable 的任务执行后可返回值,而 Runnable 的任务是不能返回值的。
6、线程的状态流转图
7、Java 线程具有五中基本状态
当线程对象对创建后,即进入了新建状态,如:Thread t= new MyThread();
当 CPU 开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就 绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
处于运行状态中的线程由于某种原因,暂时放弃对 CPU 的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被 CPU 调用以进入到运行状态。
1)等待阻塞:运行状态中的线程执行 wait()方法,使本线程进入到等待阻塞状态;
2)同步阻塞:线程在获取 synchronized 同步锁失败(因为锁被其它线程所占用), 它会进入同步阻塞状态;
(5)死亡状态(Dead):线程执行完了或者因异常退出了 run()方法,该线程结束生命周期。
8、什么是线程池?有哪几种创建方式?
java 提供了一个 java.util.concurrent.Executor 接口的实现用于创建线程池。
9、四种线程池的创建:
(1)newCachedThreadPool 创建一个可缓存线程池
(2)newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数。
(3)newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
(4)newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务。
10、线程池的优点?
(2)可有效的控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避
11、常用的并发工具类有哪些?
12、CyclicBarrier 和 CountDownLatch 的区别
(1)CountDownLatch 简单的说就是一个线程等待,直到他所等待的其他线程都执行完成并且调用 countDown()方法发出通知后,当前线程才可以继续执行。
(2)cyclicBarrier 是所有线程都进行等待,直到所有线程都准备好进入 await()方法之后, 所有线程同时开始执行!
13、synchronized 的作用?
14、volatile 关键字的作用
15、什么是 CAS
CAS 是 compare and swap 的缩写,即我们所说的比较交换。
16、CAS 的问题
CAS 机制所保证的知识一个变量的原子性操作,而不能保证整个代码块的原子性。比如需要保证 3 个变量共同进行原子性的更新,就不得不使用 synchronized 了。
之前说过了 CAS 里面是一个循环判断的过程,如果线程一直没有获取到状态,cpu 资源会一直被占用。
17、什么是 Future?
Future 表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加 Callback 以便在任务执行成功或失败后作出相应的操作。
18、什么是 AQS
19、AQS 支持两种同步方式:
20、ReadWriteLock 是什么
21、FutureTask 是什么
22、synchronized 和 ReentrantLock 的区别
(1)ReentrantLock 可以对获取锁的等待时间进行设置,这样就避免了死锁
另外,二者的锁机制其实也是不一样的。ReentrantLock 底层调用的是 Unsafe 的 park 方法加锁,synchronized 操作的应该是对象头中 mark word,这点我不能确定。
23、什么是乐观锁和悲观锁
24、线程 B 怎么知道线程 A 修改了变量
25、synchronized、volatile、CAS 比较
(1)synchronized 是悲观锁,属于抢占式,会引起其他线程阻塞。
(2)volatile 提供多线程共享变量可见性和禁止指令重排序优化。
26、sleep 方法和 wait 方法有什么区别?
27、ThreadLocal 是什么?有什么用?
28、为什么 wait()方法和 notify()/notifyAll()方法要在同步块中被调用
这是 JDK 强制的,wait()方法和 notify()/notifyAll()方法在调用前都必须先获得对象的锁
29、多线程同步有哪几种方法?
Synchronized 关键字,Lock 锁实现,分布式锁等。
30、线程的调度策略
31、ConcurrentHashMap 的并发度是什么
32、Linux 环境下如何查找哪个线程使用 CPU 最长
33、Java 死锁以及如何避免?
34、死锁的原因
35、怎么唤醒一个阻塞的线程
36、不可变对象对多线程有什么帮助
37、什么是多线程的上下文切换
38、如果你提交任务时,线程池队列已满,这时会发生什么
39、Java 中用到的线程调度算法是什么
40、什么是线程调度器(Thread Scheduler)和时间分片(TimeSlicing)?
41、什么是自旋
42、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?
43、单例模式的线程安全性
44、Semaphore 有什么作用
45、Executors 类是什么?
46、线程类的构造方法、静态块是被哪个线程调用的
47、同步方法和同步块,哪个是更好的选择?
48、Java 线程数过多会造成什么异常?
43、单例模式的线程安全性
44、Semaphore 有什么作用
45、Executors 类是什么?
46、线程类的构造方法、静态块是被哪个线程调用的
47、同步方法和同步块,哪个是更好的选择?
48、Java 线程数过多会造成什么异常?
下载链接:博主已将以上这些大厂面试题整理成了一个面试手册,是PDF版的
拼多多Java面试题、笔试题(含答案)相关推荐
- 拼多多校招的三道笔试题
题目记不太清了,主要是存下代码 第一题 #include <iostream> #include <string> #include <algorithm> #in ...
- 大公司的Java笔试题汇总(含答案)
大公司的Java笔试题汇总(含答案) 1.下列哪一种叙述是正确的(D ) A. abstract修饰符可修饰字段.方法和类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法, ...
- 2019最新拼多多Java面试题:幻影读+分段锁+死锁+Spring Cloud+秒杀
拼多多Java一面 简短自我介绍 事务的ACID,其中把事务的隔离性详细解释一遍 脏读.幻影读.不可重复读 红黑树.二叉树的算法 平常用到哪些集合类?ArrayList和LinkedList区别?Ha ...
- java面试、笔试题(0815版)
java面试.笔试题(201 1. Java基础部分 4 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 4 2.Java有没有goto? 4 3.说 ...
- JAVA面试、笔试题
@[TOC]目录 JAVA面试.笔试题 @目录 一. CoreJava部分 7 1. java中有哪些基本类型? 7 2. java反射 7 3. 易错,理解题 7 4. Java有几种创建对象的方法 ...
- java 用程序代码解释继承_关于初级java程序员笔试题
关于初级java程序员笔试题 Sun 认证Java程序员考试内容涉及Java所有相关知识.编程概念及applet开发技巧.下面是小编整理的关于初级java程序员笔试题,欢迎大家参考! 第一题:判断题 ...
- 分享18道Java基础面试笔试题
转载自 分享18道Java基础面试笔试题(面试实拍) 1.你最常上的两个技术站和最常使用的两个app分別进什么?主要解决你什么需求? 2.请简述http协议中get请求和post请求的区别. 3.请简 ...
- 2017年java笔试题_初级java程序员笔试题
Java认证考试是业界唯一经Sun授权的Java认证,考试内容涉及所有Java相关知识.编程概念及applet开发技巧.下面是小编整理的关于java初级程序员面试题,欢迎大家参考! 一:判断题 1.J ...
- 东软java的笔试_东软java面向对象程序设计笔试题
东软java面向对象程序设计笔试题 东软集团培训事业部 第 1 页 共 9 页 Java 面向对象程序设计 考试卷 班级: 姓名: 时间: 90 分钟 一.选择题(没有注明多选,则为单选) 1. 下列 ...
- 京东2019春招Java开发类笔试题
京东2019春招Java开发类笔试题 1. (单选题) 在对问题的解空间树进行搜索的方法中,一个结点有多次机会成为活结点的是 ( B ) A. 动态规划 B. 回溯法 C. 分支限界法 D. 回溯法和 ...
最新文章
- 用百度地图API分析打交通大数据
- js正则贪婪模式_JavaScript正则表达式迷你书之贪婪模式-学习笔记
- 【NLP】图解GPT-2(完整版)
- mysql 存储过程 无限分类,查看新闻/公告--[转帖]mysql存储过程实现的无限级分类,前序遍历树...
- DWR的使用以及DWR中工具JS文件的使用
- 默认HotSpot最大直接内存大小
- qt5 操作mysql 代码_qt5使用mysql
- matlab基于dct的图像压缩编码解码_一篇文章搞定DCT在JPEG中的本质
- Golang错误和异常处理的正确姿势
- 《Java程序员职场全功略:从小工到专家》连载四:IT人不容易
- 安装apache-2.2.6, php-5.2.5, mysql-5.0.2的过程
- 下载anaconda后配置环境变量
- 知识整理的八种笔记方法
- html中图片放大镜效果图,HTML5使用不同精度的图片来实现图像放大镜效果
- c语言实现学生档案管理系统
- 英文投稿期刊查询网站汇总
- 全差分运算放大器ADA4930的分析(2)
- 常用的python标准库有哪些?
- 推荐算法之CB,CF的实现
- 不规则现金流 java设计_第三节不规则现金流的计算