面试

java最强的并发架构,没有之一!!

被刻印的时光 ゝ 提交于 2021-01-17 17:04:45
最近粉丝反馈,现在面试问的问题真的太太太太难了! 几轮面试下来,多线程、Jvm、Redis、MySQL调优、设计模式、项目全部问了一遍,面试过程很是痛苦!!! 不光这些,最要命的算法也问的很深... 小编特意整理了一堆Java资料,作为福利送给粉丝们... 福利 资料很干,2021年面试必问知识点都在这!!! 立即打开微信,长按下面二维码扫一扫 一定要备注 马士兵!否则不通过! 如果简历上写着各种的 “精通“ ,大厂肯定上抢着要!!! 精通多线程 ,可以让你从容应对 (吊打) 大厂面试官,在工作中在工作中 轻松处理高并发大数据量 的问题 精通JVM调优 ,在工作中轻松搞定那些 其他人搞不定的难题 ,可以拉开我们和 CRUD程序员 的距离,面对线上的 内存溢出、程序崩溃等疑难杂症 不再无从下手,面对 JVM的海量参数 ,不再迷茫无助,!!! 精通Redis ,可以增加你的 面试机会 ,在面试中脱颖而出,可以解决 工作中架构性能问题,掌握服务治理,分布式解决方案能力,增加团队协作沟通能力 精通MySQL调优 ,可以从容应对 面试官的狂轰乱炸。 深入理解mysql的索引原理,事务原理,锁机制,分布式集群方案,参与工作的SQL调优工作, 掌握分布式解决方案,让数据库不再成为你的瓶颈 算法 ,在大厂面试中的 比重要来越高,难度越来越大 ,掌握 左神算法 可以在工作中让你程序的 执行效率

都为你整理好了,5种Java 随机方式对比!你都知道吗?

陌路散爱 提交于 2021-01-17 16:56:19
1. Math.random() 静态方法 产生的随机数是 0 - 1 之间的一个 double,即 0 <= random <= 1。 for (int i = 0; i < 10; i++) { System.out.println(Math.random()); } 结果: 0.3598613895606426 0.2666778145365811 0.25090731064243355 0.011064998061666276 0.600686228175639 0.9084006027629496 0.12700524654847833 0.6084605849069343 0.7290804782514261 0.9923831908303121 实现原理: When this method is first called, it creates a single new pseudorandom-number generator, exactly as if by the expression new java.util.Random() This new pseudorandom-number generator is used thereafter for all calls to this method and is used nowhere else.

把GOF(俗称四人帮)当作圣经

隐身守侯 提交于 2021-01-17 08:54:24
把GOF(俗称四人帮)当作圣经 Andy.Song IT哈哈 我十分羡慕设计模式的几位作者。这本书籍以其他书籍所无可比拟的气势影响了整个IT界。如果你没看过《设计模式》,没有记住模式的名字或者准则的话,那么在面试中就可能无法通过。期望这样的错误可以慢慢改善。 不要误解我,这本书本身是没有问题的。问题出在人们如何解释以及使用它。下面是通常场景: 1.架构师马克,拿到这本书开始阅读。他觉得这本书牛逼坏了! 2.马克趁热打铁开始阅读现在工作的代码。 3.马克选择了一种设计模式并应用到了代码当中。 4.随后马克把这本书推荐给了那些跟他重复同样步骤的资深开发者。 结果就是一团糟。 如何正确使用这本书实际上已经在导读中做了清晰的说明(提醒那些不看导读的人)——“在过去你有个问题,而且这个问题总是一遍又一遍地困扰着你”。注意到其中的顺序了吗?先有一个问题,然后查看这本书之后找到对应的解决方案。 不要掉进看这本书的陷阱当中——“找到一个方案然后尝试把它应用在自己的的代码中。尤其要注意的是,一些书中描述的模式在现实当中已经不再正确。” 来源: oschina 链接: https://my.oschina.net/u/4405012/blog/4906769

Java面试题全集(8)

∥☆過路亽.° 提交于 2021-01-17 08:35:46
Java面试题全集(8) 白玉 IT哈哈 71、如何用Java代码列出一个目录下所有的文件? 答: 如果只要求列出当前文件夹下的文件,代码如下所示: import java.io.File; class Test12 { public static void main(String[] args) { File f = new File("/Users/Hao/Downloads"); for(File temp : f.listFiles()) { if(temp.isFile()) { System.out.println(temp.getName()); } } } } 如果需要对文件夹继续展开,代码如下所示: import java.io.File; class Test12 { public static void main(String[] args) { showDirectory(new File("/Users/Hao/Downloads")); } public static void showDirectory(File f) { _walkDirectory(f, 0); } private static void _walkDirectory(File f, int level) { if(f.isDirectory()) { for(File temp

【黑子】的面经分享

三世轮回 提交于 2021-01-17 06:43:36
认识肥朝 最近这段时间,在做面试准备工作的时候,发现了一个知识盲点:Dubbo中的SPI机制。于是,开始搜索一些文章好好扫扫盲。无意中搜到简书上肥朝的Dubbo源码解析这个系列, 发现这真是一个大宝藏啊,然后就一口气全部读完。这个系列的文章,读起来通俗易懂,老少皆宜。后来,就自然而然的关注肥朝的公众号,看了更多他的源码解析类的文章,受益匪浅。 自我介绍 17年毕业,待过三家公司,在疫情期间这个特殊时刻,开启了找工作之旅。磕磕绊绊,跌跌撞撞终于 找到了一份满意的工作,公司是个比较知名的独角兽公司,年薪也达到了20W。其实目前这个状态, 并不是一个值得骄傲,或者值得别人羡慕与称赞的状态。这段面试经历,也并没有所谓的offer收割机经历。 本来这个过程,我是想自我总结然后自我勉励。后来肥朝邀请分享一下,那我就分享一下这个失败的经历吧。 面试分享 来个提醒,没有面试题的分享。哪怕是相同的面试官,招聘相同的岗位,然后不同的候选人,中间过程遇到的面试题也会完全不一样。 所以,这个分享没有面试题,只有个人的反思与总结。 首先,概括一下面试过程。阿里系勉强撑到二面,携程卒在二面。其余就面了三家公司,三家都中,然后选了一个入职了。 在我看来,这次面试其实是很失败的一个过程。第一,我心态太急。由于失业太久,所以给了offer后,就着急上班,从投递简历到入职,也就一周时间。 导致后续好多面试机会

【沙滩裤】的面经分享

。_饼干妹妹 提交于 2021-01-17 06:43:19
自我介绍 本人二本,工作4年半得样子,专业算半科班,毕业只能进个外包,好在领导还错,项目也不错,交通银行手机app,成长蛮大的,混了接近3年,毅然决定去互联网公司试试,面试了某东6个部门后,终于成功进入,还是订单的核心部门,在这里算是飞速的成长吧,今年年初想着换个工作,原因就是钱少,事多,离家远,根据肥朝经典语录 能力强,肯加班,要钱少,根据CAP定理只能3选2。其实主要原因还是组里都是10年左右的大佬,新人难上位,职级不升,工资不涨,那还怎么混,是时候出去了,因为现在是在大公司,所以下一个也想着至少要进一个比现在公司大的公司,所以选择非常少,某里,某讯,某条,某团,除此之外别无选择。吹到这,面试开始。。。 offer收割 前后一共面了6次某团,年前3次,全部失败,基本都是2面没过,原因很明确,算法不过关,于是过年期间,恶补一波,年后面1次某滴出行(其实面这个是有点因为年前的面试失利,信心受挫,先面个保底),装逼完毕,继续,也面了 3次某团,1次某里,都是在同一天投的简历,一周把这些都面完了,结果就是3个某团和某滴出行都通过了,某里没通过,说实话,比较可惜,当时的面试官就是如果入职后的工作中的领导,对我挺满意的,说让我准备下一轮,然后就收到了没通过的邮件,打电话问了下,最后给我说还是想招P7及以上的人,非常可惜。最后选择了某团外卖 面试准备 1)这个其实真的是因人而议

Android面试题

女生的网名这么多〃 提交于 2021-01-17 03:45:06
Android面试题[百度,小米,美团] 类加载器 双亲委托机制 自己定义java.lang.String, 在其他地方调用String类,调用的是系统的还是自定义的 同一个类用两个类加载器加载是否一样 类加载器的分类 类加载器在插件化中的应用 Handler Message 一个线程有几个Handler,如果一个线程有多个Handler,那么怎么系统怎么确定某个Message所回调到的handleMessage方法 两个副线程可以使用Looper.prepare公用一个MessageQueue吗?如果可以怎么实现 HandlerThread的用法 多线程 volatile关键词 lReentrantLock synchronized(同步代码快,同步函数,同步变量有什么区别) 有使用过什么多线程类? (回答任意一个都会追究到源码级,例如说AsyncTask,会问AsyncTask的线程池,并行和串行实现以及BlockingQueue的源码) A,B两线程同时启动,A执行到某一段必须等待B执行完才能接着执行,怎么实现?(消费者生产者模式) 设计模式 书写一个线程安全的单例模式(纯手写) 列举几个源码中你觉得用的比较好的设计模式并举例(AlertDialog Builder) 算法(书写代码) 自己实现String的equals方法 字符串反转算法 十二个球

高级开发必须理解的Java中SPI机制

霸气de小男生 提交于 2021-01-17 02:57:50
本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。 1 SPI是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“ 基于接口的编程+策略模式+配置文件 ”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。 Java SPI就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。所以SPI的核心思想就是 解耦 。 2 使用场景 概括地说,适用于: 调用者根据实际使用需要,启用、扩展、或者替换框架的实现策略 比较常见的例子: 数据库驱动加载接口实现类的加载 JDBC加载不同类型数据库的驱动 日志门面接口实现类加载 SLF4J加载不同提供商的日志实现类 Spring Spring中大量使用了SPI,比如:对servlet3

560字带你彻底搞懂:MySQL的索引优化分析

风格不统一 提交于 2021-01-16 23:53:55
正文 一、SQL分析 性能下降、SQL慢、执行时间长、等待时间长 查询语句写得差 索引失效 关联查询太多join(设计缺陷) 单值索引 :在user表中给name属性创建索引,create index idx_name on user(name); 复合索引 :在user表中给name、email属性创建索引,create index idx_name_email on user(name,email); 服务器调优 及各个参数设置(缓冲、线程数等) 二,join查询 1,SQL执行顺序 a)手写SQL b)机读 c)总结 2,JOIN查询 a)建表语句 b)满足条件的join语句 #左连接 SELECT * FROM tbl_dept t1 LEFT JOIN tbl_emp t2 on t1.id = t2.deptId; #右连接 SELECT * FROM tbl_dept t1 RIGHT JOIN tbl_emp t2 on t1.id = t2.deptId; #内连接(交集) SELECT * FROM tbl_dept t1 INNER JOIN tbl_emp t2 on t1.id = t2.deptId; #左连接(只取A独有的) SELECT * FROM tbl_dept t1 LEFT JOIN tbl_emp t2 on t1.id = t2

从0开始搭建数据仓库(2):产品经理如何“玩转”Hive SQL

自闭症网瘾萝莉.ら 提交于 2021-01-16 15:03:07
作者介绍 莲石东路@乌森 心之所向,***成长。从底层架构到应用实战,聊聊炼数成金背后的故事。 持续更新数据治理、数据科学、数据可视化、空间计算系列文章。 01 前言 公司新入职了的产品经理小美因为业务需要,想搭一个数据大屏方便自己查看数据。她找开发小王申请了数仓权限,然后从技术中台里找到了数据大屏的工具,把自己平时查数据用的sql搬上去跑,结果总是报错。 小美找到了做数据产品经理的师兄小帅看了看。 小帅:你这个查询有问题,业务系统的sql不能直接搬来用。 小美:我看长得差不多啊,除了多了个分区外,不都是sql吗? 小帅:你现在建的是Hive查询,Hive SQL虽说和SQL非常相似,但是一些细节上还是有区别的。 02 Hive SQL是什么? Hive是大数据领域常用的数据仓库组件,可以借助查询语言SQl将HDFS上存储的结构化文件映射成一张数据库表,并提供类SQL查询功能。Hive-SQL就是这个”类SQL查询功能”。Hive-SQL与SQL基本上一样,因为当初的设计目的,就是让会SQL不会编程MapReduce的也能完成处理数据工作。 【拓展】Hive-SQL是如何转化为MapReduce任务的呢?整个编译过程分为六个阶段: 1) Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree 2) 遍历AST Tree