面试

MyBatis架构和源码

孤街浪徒 提交于 2021-02-02 07:25:56
Mybatis架构解读 1. 架构图 如题,这就是 MyBatis 的执行架构图。 解释一下: 我们在使用 MyBatis 的 CRUD 操作的时候,一般有两种方式,一、直接调用 sqlSession 的 crud 方法;二、通过调用 getMapper 获取到接口代理的实现类,然后在代理方法中调用了 crud 方法。 可以看到,本质相同,最终调用的都是 sqlSession 的方法,上图就是 CRUD 执行的流程 2. 执行流程图 我们先来看一下我们执行一个 MyBatis 的查询,需要做什么。 //加载一个配置文件 InputStream resourceAsStream = Resources.getResourceAsStream( "main.xml" ); SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper

如何准备Java初级和高级的技术面试

瘦欲@ 提交于 2021-02-02 06:14:09
作者: Java工程师-Distance 链接:https://my.oschina.net/u/3739863(点击阅读原文前去围观) 本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只有当反复确认能力不行才会下结论,相反,如果候选人给我的印象不错,我也会从多个角度来衡量,以免招进会说但不会干活的“大忽悠”。 其实倒也不是我故意要为难候选人,毕竟入职后就是同事,但面试官的职责使然,而且,如果资深的面试官一般也这样。 写到这里,恐怕会吓到一些想要面试的朋友,能力强和能力弱都会被多问,那怎么办? 这就是本文将要讲到的主题: 如何准备Java初级和高级的技术面试 。 一. 换位思考下,如果你面试官,你会怎么做 1. 只能通过简历和面试来衡量,别无他法。如果某位大牛确认能力很行,但面试时无法充分地自证能力,那对不起了,过不了,现实就这样。 2. 如果面试官由于能力不行,招进来一个大忽悠,那估计会被领导骂。而且再也不会被让面试了,给领导的印象就不好了。所以不能评主观印象,而是会有些客观标准,具体而言,就是从多个方面问些题目,答好答坏就看候选人的。 其实一些题目都差不多,但不同能力的面试官问问题的切入点和渐进程度会不同

收藏,吊打面试官的kafka知识!

此生再无相见时 提交于 2021-02-02 06:09:48
1 什么是kafka Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。 2 为什么要使用 kafka,为什么要使用消息队列 缓冲和削峰: 上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性: 项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。 冗余: 可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。 健壮性: 消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。 异步通信: 很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 3.Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么 ISR:In-Sync Replicas 副本同步队列 AR:Assigned Replicas 所有副本

华为鸿蒙 OS 尖刀武器之分布式软总线技术全解析!

亡梦爱人 提交于 2021-02-02 06:08:26
没有人能够熄灭满天星光 华为开发者大会2020在广东东莞松山湖欧洲小镇举办,在主题演讲环节中,华为消费者业务总裁余承东宣布“鸿蒙”系统升级到2.0版本(HarmonyOS 2.0),余总表示,“鸿蒙”系统将在12月份推出手机版本,明年华为的手机将全面支持“鸿蒙”系统。 “没有人能够熄灭满天星光,每一位开发者,都是华为要汇聚的星星之火”,华为消费者业务CEO余承东说,华为将全面开放核心技术、软硬件能力,与开发者们共同驱动全场景智慧生态的蓬勃发展。 HDC大会 在这场发布会上也详细讲解了分布式软总线的概念,下面我们来看一下分布式软总线是不是真的硬核,会给我们以后的生活带来什么影响? 1. 必须得补的传统总线知识 总线英文名叫Bus,你猜的没错也是公共汽车的意思。总线是一个非常广泛的概念,在传统计算机硬件体系中应用非常广泛。 总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。 计算机硬件总线结构 在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。 传统总线的典型特征: 即插即用 高带宽 低时延 高可靠 标准

LeetCode

一个人想着一个人 提交于 2021-02-02 05:53:58
一 目录 「不折腾的前端,和咸鱼有什么区别」 目录 一 目录 二 前言 三 解题及测试 四 LeetCode Submit 五 解题思路 二 前言 「难度」 :简单 「涉及知识」 :数组 「题目地址」 :https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits/ 「题目内容」 : 给你一个整数数组 nums, 请你返回其中位数为 偶数 的数字的个数。 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 是 3 位数字(位数为奇数) 2 是 1 位数字(位数为奇数) 6 是 1 位数字 位数为奇数) 7896 是 4 位数字(位数为偶数) 因此只有 12 和 7896 是位数为偶数的数字 示例 2: 输入:nums = [555,901,482,1771] 输出:1 解释: 只有 1771 是位数为偶数的数字。 提示: 1 <= nums.length <= 500 1 <= nums[i] <= 10^5 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits 著作权归领扣网络所有

知乎:到底去大公司还是小公司?

岁酱吖の 提交于 2021-02-02 05:52:30
点击“ 开发者技术前线 ”,选择“星标🔝” 让一部分开发者看到未来 文章来源 / dwz.cn/NA3E0JFG 职场生涯总会面临着选择,尤其对我们这些 IT 人来说,跳槽的频率应该是所有行业中相当大的了。那么我们跳来跳去,究竟该选择什么样的公司 ?大 or 小 。 工作三年多了,经历一大一小,最近也面试了不少家公司,形态各异,说说自己的感受想法。 在小公司中,给我个人的印象大多数环境都不怎么样。定义下这个小公司规模吧,在几人到几十人吧,反正不会超过100人。 亲历一家小公司, 面试见过数家小型公司。我觉得大概分两种: 1.真正的黑穷丑 入职原因:实在没地方去了,毕业什么也不会,来做苦工吧 缺点:加班是家常便饭、工资少的可怜、福利基本没有,事事都要你干 优点:锻炼你顽强的意志力、培养男人的愤怒血性,当然干的多了能力自然也会有提升,不过如果没有牛人带且自己也不是特强的话,你的视野应该是比较窄的 2.有稳定业务、公司盈利还不错,待遇也可以媲美大公司 缺点:还是个人视野的问题,如果你个人能力很好,不是野心很大,在小公司也不错 优点:至少福利待遇不会差,环境也还可以,公司小自己做的贡献领导会看到,做个2/3年可能就是公司的主干力量了,有成就感。 说说自己的第一家公司,那个小公司 自己毕业时选择的是这家小公司,说选择当时是有对比,而最终决定去这家小公司的原因是他给开了3k的工资

跳来跳去,到底去大公司还是小公司?

浪子不回头ぞ 提交于 2021-02-02 05:43:31
来源:dwz.cn/NA3E0JFG 1.真正的黑穷丑 2.有稳定业务、公司盈利还不错,待遇也可以媲美大公司 说说自己的第一家公司,那个小公司 职场生涯总会面临着选择,尤其对我们这些 IT 人来说,跳槽的频率应该是所有行业中相当大的了。那么我们跳来跳去,究竟该选择什么样的公司 ?大 or 小 。 工作三年多了,经历一大一小,最近也面试了不少家公司,形态各异,说说自己的感受想法。 在小公司中,给我个人的印象大多数环境都不怎么样。定义下这个小公司规模吧,在几人到几十人吧,反正不会超过100人。 亲历一家小公司, 面试见过数家小型公司。我觉得大概分两种: 1.真正的黑穷丑 入职原因:实在没地方去了,毕业什么也不会,来做苦工吧 缺点:加班是家常便饭、工资少的可怜、福利基本没有,事事都要你干 优点:锻炼你顽强的意志力、培养男人的愤怒血性,当然干的多了能力自然也会有提升,不过如果没有牛人带且自己也不是特强的话,你的视野应该是比较窄的 2.有稳定业务、公司盈利还不错,待遇也可以媲美大公司 缺点:还是个人视野的问题,如果你个人能力很好,不是野心很大,在小公司也不错 优点:至少福利待遇不会差,环境也还可以,公司小自己做的贡献领导会看到,做个2,3年可能就是公司的主干力量了,有成就感。 说说自己的第一家公司,那个小公司 自己毕业时选择的是这家小公司,说选择当时是有对比

经典算法面试题

十年热恋 提交于 2021-02-02 05:36:39
1. 10亿个数中取前1000大的数 维护一个1000个节点的小顶堆。 时间复杂度O(nlogk) 2. 合并k个有序(假设升序)数组 具体步骤:(1)将k个数组的第一个元素取出来,维护一个小顶堆。      (2)弹出堆顶元素存入结果数组中,并把该元素所在数组的下一个元素取出来压入队中。      (3)调整堆的结构,使其满足小顶堆的定义。      (4)重复(2)(3)直到合并完成。 3. 给定一个正整数 N,需要把它分解成至少两个不同的整数和,问有多少种不同的分解方案 动态规划:dp[n][m]表示n被分解为最大为m的数的方案数 \[dp\left[ n \right]\left[ m \right] = \sum\limits_{k = 1}^{m - 1} {dp\left[ {n - m} \right]\left[ k \right]} \] 4. 一个数组怎么输出前K大的值、时间复杂度。 借助快排partition的思想,平均时间复杂度是O(n) 5. 查找数组中出现次数超过一半的数字 等价于求数组中第n/2大的数,和4中思想一样,平均时间复杂度O(n) 6.二维数组查找(剑指offer) 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数

面试必问:Spring循环依赖的三种方式

旧时模样 提交于 2021-02-02 04:32:21
转自:学习园 链接: blog.csdn.net/u010644448 引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Spring是如果解决循环依赖的。 第一种:构造器参数循环依赖 Spring容器会将每一个正在创建的Bean 标识符放在一个“当前创建Bean池”中,Bean标识符在创建过程中将一直保持在这个池中。 因此如果在创建Bean过程中发现自己已经在“当前创建Bean池”里时将抛出BeanCurrentlyInCreationException异常表示循环依赖;而对于创建完毕的Bean将从“当前创建Bean池”中清除掉。 首先我们先初始化三个Bean。 public class StudentA { private StudentB studentB ; public void setStudentB (StudentB studentB) { this .studentB = studentB; } public StudentA () { } public StudentA (StudentB studentB) { this .studentB = studentB; } } public class StudentB { private StudentC

面试必问:Spring循环依赖的三种方式

╄→гoц情女王★ 提交于 2021-02-02 04:07:54
小A 你好面试官,非常高兴能参加今天的面试 面试官 没事,先做一个自我介绍吧 小A 我叫小A,工作三年了,做过...... 面试官 嗯,好的,看到你的项目这块,在公司主要用的就是spring全家桶相关的技术是吧 小A 对的 面试官 聊聊Spring吧 小A S pring主要包含的就是IOC和AOP,IOC是控制反转...AOP是面向切面编程... 面试官 之前了解过spring源码吗?能不能简单描述下bean的创建过程 小A 之前了解过,是这样的(通过死记硬背回答了一点) 面试官 感觉你好像没有怎么了解过源码啊,你再说一下IOC容器的初始化过程吧 小A ...... 面试官 没关系,能说一下spring的依赖注入问题吗? 小A 了解过一些,一个是构造器,一个是set,然后依赖注入可以完全解决了 面试官 你确定吗? 小A 好像是吧 面试官 行吧,今天的面试就到此为止吧,回去之后巩固下自己的技术,多看看源码 小A 好的。。。。。 ...... 此处省略一堆问题 脑子里已经是浆糊了 这就是我经历的一次地狱级别的血淋淋的面试,上面问到的哪些面试题你能答得上来吗? 当我从面试的大楼里出来的时候脑袋里还是昏昏沉沉的,你压根不知道我经历了什么,我就面试一个开发岗位,有必要问我这么多 后来咨询我的导师: 马士兵老师 ,他是这么说的,现在的就业竞争很激烈,在考察技术的时候不单单是停留在应用层面