面试

这一次,带你彻底搞懂join的用法

那年仲夏 提交于 2020-12-24 05:54:58
java多线程里的join,从字面意思来看是联合,合并的意思,但如果面试时这么回答,基本上可以断定面试者还没搞懂。 join究竟能干什么,今天给出一个最通俗的解释,那就是 在多线程环境下实现暂时以单线程执行,或者说在并行执行的环境中实现暂时以串行执行。 为了说明这个问题,我们看一段再常见不过的代码,代码内容是,让三个线程分布去打印一段内容 //代码块1 public class TestJoin { public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new DoSth()); Thread t2 = new Thread(new DoSth()); Thread t3 = new Thread(new DoSth()); t1.start(); t2.start(); t3.start(); System.out.println("主线程执行"); } } class DoSth implements Runnable { @Override public void run() { int n = 5; while (n > 0) { System.out.println(Thread.currentThread().getName()); try

java接口自动化(一)

泄露秘密 提交于 2020-12-24 02:28:00
简介   了解什么是接口和为什么要做接口测试。并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程。其实这些基本上在python接口自动化的文章中已经详细的介绍过了,不清楚的可以过去看看、了解了解。 传送门 在这个系列宏哥想换一种方式来给小伙伴们讲解一下相关的知识。希望大家喜欢。 一、什么是接口 在这里我举了一个比较生活化的例子,比如我们有一台笔记本,在笔记本的两端有很多插口。例如:USB插口。那么这个USB插口是用来做什么的呢?比如我们可以插鼠标、插键盘、插U盘等等。为什么同一个USB接口就可以识别这么多不同的设备呢?那是因为这个接口有一个统一的对外连接标准。这个就是我们生活中比较常见的接口。那么在开发中也有这么一个对外开放的接口统一协议接口,例如http协议。规定好统一协议,通过客户端来调用。这里的鼠标、键盘就相当于调用方。那么接口就可以简单的理解为对外暴露的统一规范的暴露点。 二、为什么要做接口接口测试 1】更容易实现持续集成 2】自动化测试落地性价比更高。比UI更稳定 3】大型系统更多更复杂、系统间的模块越来越多 4】BUG更容易定位 5】降低研发成本。提高效率 三、接口自动化测试开发技能树 开发语言(java) 测试框架(TestNg,HttpClient) Mock技术 数据持久层框架(mybatis) 持续集成工具(Jenkins) 接口协议相关基础知识

Java中不可或缺的50个小技巧,好用!

拥有回忆 提交于 2020-12-24 01:01:27
《Effective JavaJava》名著,必读。如果能严格遵从本文的原则,以编写API的质量来苛求自己的代码,会大大提升编码素质。 以下内容只记录了我自己整理的东西,还是建议读原文。为了聚焦知识点,一些说明故意忽略掉了。相当于是一篇摘要。 1、考虑用静态工厂方法替代构造函数 例子: Integer.valueOf(“1”)、Boolean.valueOf(“true”)等。 优势: 可读性高(方法名) 性能(不一定创建对象) 灵活性高 下面针对三个优势进行一些解读。 可读性高 new Point(x,y)和Point.at(x,y)、Point.origin()。构造函数只能看出两个参数,不知其意,后者更易理解。 性能 在某些情况下,可以事先进行实例化一些对象,调用时直接调用即可,不需要进行改变。比如,Boolean。 public final class Boolean implements Serializable, Comparable<Boolean> { // 预先设置两个对象 public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); public Boolean(boolean var1) { this

java常见面试题

人盡茶涼 提交于 2020-12-23 20:13:28
http://www.importnew.com/22637.html http://www.importnew.com/22056.html J2SE基础 1. 九种基本数据类型的大小,以及他们的封装类。 2. Switch能否用string做参数? 3. equals与==的区别。 4. Object有哪些公用方法? 5. Java的四种引用,强弱软虚,用到的场景。 6. Hashcode的作用。 7. ArrayList、LinkedList、Vector的区别。 8. String、StringBuffer与StringBuilder的区别。 9. Map、Set、List、Queue、Stack的特点与用法。 10. HashMap和HashTable的区别。 11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。 12. TreeMap、HashMap、LindedHashMap的区别。 13. Collection包结构,与Collections的区别。 14. try catch finally,try里有return,finally还执行么? 15. Excption与Error包结构。OOM你遇到过哪些情况,SOF你遇到过哪些情况。 16. Java面向对象的三个特征与含义。 17.

没钱别做练习生

亡梦爱人 提交于 2020-12-23 19:40:21
https://zhuanlan.zhihu.com/p/108888940 作者|毛丽娜 编辑|李春晖 自从娱乐圈接连遭遇资本市场收紧、内容监管、查税、疫情等等重创,大众眼中光鲜的职业终于露出了其真实残酷同时也“贴近群众”的一面:小演员没戏拍啦、老歌手给微商网红唱堂会啦、底层艺人穷到兼职乃至改行啦…… 而最新惊掉人下巴、且更加紧贴实事的,无疑是乐华练习生“口罩诈骗”事件。 在优酷2019年选秀综艺《以团之名》中未能出道的黄智博,迎来了自己偶像生涯最大或许也是最后一波流量。他谎称自己有购买口罩的渠道,收款后随即拉黑对方。靠着这个方法诈骗28万的黄智博,很快被上海警方带走,乐华随即发表声明与其解约。 口罩、诈骗、乐华、练习生、选秀……这么多关键词凑一起,不难想象新闻的爆炸效应。除了“小小年纪不学好”的批评,练习生“穷到诈骗”的境况也颇让外人惊讶。 随后,黄智博的姐姐发表了一封亲笔信,表示家贫且父亲有心脏病,姐弟俩少年便外出打工,文化程度和法律意识淡薄。黄智博被娱乐公司选中后,日常花销变大,但又长期没收入,父亲把做手术的钱贴补到弟弟身上。春节黄智博看到父亲身体每况愈下,决定铤而走险。 这不是傻吗这不是?这年头长得略微平头正脸的男孩子,开个直播“云乞讨”,比这么拙劣的诈骗合理合法还来钱快吧? 而事实上,不止一家经纪公司对硬糖君抱怨,招来的练习生一两个月就跑了,因为又辛苦、又不如做网红好赚

面试阿里P7岗,第六道题就被干掉了...

。_饼干妹妹 提交于 2020-12-23 19:06:00
我昨天参加了一线大厂的技术面,擦,真TM的太难了: 有没有一种一定能保证线程安全的代码写法?(偷偷告诉你,真的有!) 多个线程如何保持 A1B2C3 等顺序交替输出? synchronized volatile的CPU原语是如何实现的? 无锁、偏向锁、轻量级锁、重量级锁有什么差别? 如何正确的启动和停止一个线程? 线程和纤程的区别的是什么?为什么纤程比较轻量级? ThreadLocal有没有内存泄漏的问题?为什么? 下列三种业务,应该如何使用线程池: 高并发、任务执行时间短 并发不高、任务执行时间长 并发高、业务执行时间长 如果你平时只有CRUD的经验,不了解 多线程与高并发 ,面对这样面试题,大概率一头雾水。 如果你真是这样,建议要拿出 2 个小时的时间,参加一次马士兵老师亲授的 《多线程与高并发》 训练营, 限时福利,本次免费学习... 诶 , 马士兵是谁? 99年清华毕业,从程序员干到CTO,一直致力于推动Java、大数据、AI生根中国,其高并发直播课程广受欢迎,有千万次播放学习。 马士兵 让骨灰级扫地神僧马士兵老师带你将多线程的知识系统化,帮助你理解多线程在 CPU层级的实现 ,以及这些实现如何一层一层的映射到那些上亿用户,千万QPS,百万TPS的系统。 训练营时间 : 9月2日-9月3日,20:00 限时福利,本号粉丝免费学习... 预习资料: 长按扫码即可添加微信

10小时,就能吃透Kafka源码?

本小妞迷上赌 提交于 2020-12-23 18:43:37
在大数据时代飞速发展的当下,Kafka凭借着 其高吞吐低延迟、高压缩性、持久性、可靠性、容错性以及高并发 的优势,解决了“在巨大数据下进行准确收集并分析”的难题,也受到了不少大厂以及工程师的青睐, 但是有大部分的人,在学习以及面试的过程中才发现自己并没有完全掌握其奥义,对于常见问题仍旧一知半解,这 主要是源码阅读的过程中存在问题: (1)源文件太多,不知道重点; (2)源码量太大,无数次从开始到放弃; (3)方法不对,遇到“技巧性”编码就蒙圈; (4)不够体系化,不会将源文件归类阅读。 不要担心,这里为你推荐一份 Kafka 进阶精品视频——《Kafka 生产者源码解析》 (本号粉丝限时5天免费开放) ,能让你 系统理解 Kafka 底层原理,满足不同阶段的开发工作需求 : 视频将通过 实战项目 贯穿技术架构演进始末,用通俗易懂的方式从 Kafka 底层源码设计 , 深度揭秘 Kafka 各种特性 ,只用 10h 就可以帮你掌握: 1、快速上手 Kafka 生产者底层实现原理,轻松掌握 Kafka 各种新特性; 2、领略 Kafka 源码设计之美,系统掌握 Kafka 源码实现逻辑,底层机制; 3、扛起 Kafka 架构建设大旗,轻松应对工作、面试中各种 Kafka 难题。 各大互联网公司都要求开发者具备源码阅读经验,很看中候选人源码二次开发能力 ,而《Kafka 生产者源码解析

jsliang 求职系列

自闭症网瘾萝莉.ら 提交于 2020-12-23 14:30:59
面试一面大概率问题: 什么是防抖,如何防抖? 什么是节流,如何节流? 一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 防抖  2.1 手写防抖  2.2 防抖应用 三 节流  3.1 手写节流  3.2 节流应用 四 防抖 + 节流 二 防抖 防抖 :任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行。 举例: 监听拖拽滚动条,然后频繁向下滚动信息,会变得很慢,很迟钝。 点击提交表单后,用户在结果还没出来的时候重复触发。 简单来说:某件事你并不想它太过频繁触发,那么设置一个定时器,每次进来的时候都清除原本的定时器,然后重新开始计时。 2.1 手写防抖 设置定时器 设置一个闭包,返回一个方法 如果反复进来,清空前面的定时器,再重新设置一遍 function debounce ( fn ) { let timer = null ; return function ( ) { clearTimeout(timer); timer = setTimeout( () => { fn.call( this .arguments); }, 1000 ); } } 2.2 防抖应用 结合实例: <!DOCTYPE html > < html lang = "en" > < head > < meta charset = "UTF-8" > < meta name

面世宣言:给 Android 开发者的面试手册

徘徊边缘 提交于 2020-12-23 14:10:25
这个系列不是最好的了? 对,再也不敢说「 这可能是最好的 XXX」了。虽然我的 RxJava 2.0 系列 获得了较好的反馈,甚至还有人说「能望见传世神文 《给 Android 开发者的 RxJava 详解》 的脚步」,那都不重要了。 而且知道我的人也知晓,我不是扎根互联网的老程序员,对面试也是知之甚少,所以我不敢说这是「最好」的。 虽然这个系列已经不是「最好」的了,但我依然会花很多时间去完善他,感谢好友「兰柳学」的强势赞助。 为什么要写这个系列? 装逼从来都不是必要的,必要的是我们始终如一的想着装逼。 咳咳,讲点现实的,是因为今天面试被虐了。 一直以来我以为自己还算是个不错的 Android 开发工程师,GitHub 好像有较为欢迎的假象。还有一大批诸如 RxJava、Dagger2、Retrofit 在内的框架文章可以装装逼,但实际上大多数企业,尤其是互联网公司,根本就不会看重你娴熟运用框架的能力。 面试最后收到一句话:「 我们非常肯定你的开源分享能力和学习能力,我们也相信你能做好开发,但你的基础确实是太 low 了!」 其实从我的回答来说,我自己也觉得非常 low,用「舍本逐末」四个字来形容我再合适不过。 划重点!!! 为了防止一些类似我这样的 Android 开发工程师「严重偏科」,我决定出这么一个系列,我不知道这个系列多久可以出完,也许明天,也许三年

淘宝|蚂蚁|菜鸟|盒马|滴滴|饿了么面经(已拿多个offer)

こ雲淡風輕ζ 提交于 2020-12-23 12:44:29
上一篇的同学拿到了bigo和腾讯的offer,这一次的分享来自两位同学的面试综合,他们分别拿到了菜鸟、嘀嘀、盒马的多个offer,由于面试的时间跨度时间太长,且面试的部门太多,只能回忆到具体的面试题,无法再具体区分出几面了,但是面试真题还是可以拿出来分享一下,且看正文。 菜鸟&滴滴 这些来自第一位同学分享的面试题,由于过于优秀,同时面试几个大厂都已拿到offer,他只能回忆到一些重点的问题。 JVM内存溢出排查? 根据他的描述,JVM内存溢出的排查是个必问点,基本上每个公司都被问到,要知道怎么利用jstat、jmap这些命令结合MAT等工具导出堆栈信息查看分析,如果没有实战的经验,最好平时可以自己模拟一下场景,看看具体怎么处理。 网络编程相关的提问 因为大家Java可能做业务相关的需求比较多,如果不是涉及到比如IOT这种和网络编程相关的话,确实不是很清楚,对于这块问题他直接回复不清楚,问题也不大。 并发包相关问题 JUC下的那些常见问题,ConcurrentHashMap、CountDownLatch等等这些都应该要熟悉掌握,面试必考点。 线程池原理 基本也是必问点,也比较简单。 mysql索引,锁机制,隔离级别 同上,这个也是比较基础,必须掌握的点。 Redis连环炮 Redis连环炮,数据类型、缓存击穿、雪崩、穿透、热key、大key,哨兵、集群,同步机制都应该了然于心。