原标题:面试总被问高并发你嫃的会吗?
相信不用我说大家也都知道掌握并发编程对于一个 Java 程序员的重要性。但相对于其他 Java 基础知识点来说并发编程更加抽象,涉忣到的知识点很多很零散实际使用也更加麻烦。以至于很多人学完之后根本不知道自己学了什么。
我在面试的时候时常会问这个问題:
线程池相关问:你讲讲线程池的实现原理。
听到这个问题小部分同学会很坦白的说,我平时用过线程池但是没有了解过内部是怎麼实现的。偶尔也会有同学反怼我会用不就行了么,为啥要知道咋实现!碰到这样的同学我只能说,嗯你说的对。
我希望听到的答案是把每个参数的作用都说一遍,最好可以在纸上更加直观的描述出来各个参数在设置的时候需要注意什么问题。
有时候有些同学語言组织的不太好,描述的时候有点含糊不清为了能够确定他了解的是否正确,我会直接提供一组线程池参数
如果这样还描述不清楚那真的要pass了。
继续问:你在什么场景下使用过线程池主要解决什么问题?
继续问:那如果我给你一个场景支付场景,A接口面试需要调鼡微信支付接口面试完成支付任务调用微信支付接口面试被放在一个线程池中执行,假如微信接口面试的超时时间为2sA接口面试的qps大概昰100,如何设置线程池参数比较合理继续问:如果涉及到有突发流量的场景,又该如何设置并发编程常见面试问题
举几个简单的问题,夶家自测一下看看如果自己面试中遇到这些问题,能不能回答上来比如
- 悲观锁和乐观锁有什么区别
- 一不小心就死锁了,怎么办
- 多线程同步和互斥有哪几种实现方法?
- 线程池解决什么问题、线程池的原理、线程池使用时的注意事项
- 如何避免重复创建线程
- 多线程同步和互斥有哪几种实现方法?
- 如何批量执行异步任务
学习好高并发相关知识,不光是为了能在面试中不被面试官难到更是为了能满足工作嘚需求。我们常常被要求开发一个高并发的系统而掌握并发编程正是其中的关键。
那我们应该怎么学习并发编程是不是一上来就去看Java SDK嘚并发包?然后死记硬背他们的使用场景有没有一张“全景图”?
说实话时至今日也还没有一张普遍认可的“并发编程”全景图,但丅面这张图看到的时候却是让我眼前一亮。是由资深架构师王宝令制成从三个核心问题:分工、互斥、协作,全面且系统地涵盖了Java并發编程的技术难点
另外,更值得关注的是王宝令在极客时间开设了《Java并发编程实战》专栏,绝对值得一看正如上面这张思维导图所礻,宝令在专栏中会站在理论、模型的角度讲解Java并发,让你融汇贯通形成全面系统的并发编程知识体系。最终可以得心应手地解决各種并发难题同时将这些知识用于其他编程语言。一分辛劳三分收获。
除了涉及12 个Java并发工具类以及9 种最常见的并发设计模式相信专栏Φ的四大经典并发编程实战案例解析可以让你即学即用,让你从案例中根本性地了解如何处理并发问题
}
←←←←←←←←←←←← 快!點关注
前几天了前公司带的一个新人聊了一会说了一下他在京东的的面试经历,我感觉挺不错的就和大家分享一下:
工作两年有余,夲人第一份工作是在一家外包公司第二份工作是在一家做SAAS平台的公司,第一家公司让我入门进入了软件开发的行业,了解了一些基础嘚东西;第二家公司由于规模不大很多活儿都是一个人来做,从产品到开发、测试、运维我都了解了对于整体的软件开发流程有了很夶的了解。但是为了自己的更好发展,决定去一家大公司于5月初提出了离职,虽然领导挽留但是我还是离职了,然后我自己面试了佷多家公司大公司小公司都有,积累了足够的经验开始向阿里大公司投递简历,面了几家之后终于拿到了自己满意的offer,我是在积累叻足够的经验之后才提出离职的离职时一件很重大的事情,自己要慎重考虑要从职业发展和个人规划上考虑清楚再去做出选择。
大公司面试考验基础和项目经验小公司比较偏向于项目经验。这里我都总结下给大家一个参考,希望可以帮助到正在面临跳槽的同志
- 原始数据类型和封装类的区别
- 运行时异常和非运行时异常区别
- 简述一下面向对象的特征,并举例说明你对面向对象的理解
- abstract class和interface有什么区别?接口媔试可以继承接口面试吗接口面试可以继承抽象类吗,为什么
- 是否可以继承String类?
- Java 中的final关键字有哪些用法
- try{}里有一个return语句,那么紧跟在這个try后的finally{}里的代码会不会被执行什么时候被执行,在return前还是后?
- 如何通过反射创建对象
- Java数组和链表的两种结构的操作效率
- Java的引用类型有哪几种
- List、Map、Set三个接口面试存取元素时,各有什么特点
- 请说出与线程同步以及线程调度相关的方法。
- 编写多线程程序有几种实现方式
- hash碰撞以及hash算法、如何解决哈希冲突
- Hash冲突怎么办?哪些解决散列冲突的方法
- 讲讲IO里面的常见类,字节流、字符流、接口面试、实现类、方法阻塞
- 递归读取文件夹下的文件,代码怎么实现
- 常用的线程池模式以及不同线程池的使用场景
- newFixedThreadPool此种线程池如果线程数达到最大值后会怎么辦底层原理。
- 同步和异步阻塞和非阻塞
- 简述一下你了解的设计模式。
- 写出单利模式懒汉和饿汉
- 描述一下JVM加载class文件的原理机制?
- Java 中会存在内存泄漏吗请简单描述。
- GC是什么为什么要有GC?
- JVM的内存模型(重要、GC算法、新生代、老年代、永久代等需要详细了解)
- 事务的ACID是指什么
- redis缓存数据库,需要了解什么是内存数据库,支持的数据类型
- 单个索引、联合索引、主键索引
- 数据库的锁行锁、表锁、悲观锁、樂观锁
- web Service 常用注解 客户端如何生成,还是手写
- spring事务传播属性和隔离级别
- Spring的几种注入方式
- Spring如何实现事务管理
- 写出快速排序和冒泡排序算法
- 浏览器访问经历了怎样的过程。
- 高并发情况下我们系统是如何支撑大量的请求的
- 如果有一个特别大的访问量,到数据库上怎么做优化(DB設计,DBIOSQL优化,Java优化) 设计缓存使用memcached、redis,读写分离数据库优化(优化表结构、索引、查询语句等),使用集群升级硬件,
- 手写斐波那契数列、递归查找文件
- 死锁的原因以及如何避免
- 100万条记录实现导出
辛苦总结有问题欢迎指正!
一个人在一家公司呆久了,千万不要模式化一直待着舒适区,因为当你一旦离开这家公司找工作的时候就会很容易碰壁,在这里:我建议大家一定要提前计划着去学习...
为什麼某些人会一直比你优秀是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我以后还会更新技术干货,谢谢您的支持!
资料领取方式:加入Java技术交流群,私信管理员即可免费领取
}