![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试文
程序员麦冬
这个作者很懒,什么都没留下…
展开
-
华为资深架构师花数月整理:2021年最新版Java架构面试合集【Java基础+多线程+Mysql+Redis+JVM】
前言:现在已经十二月除,金九银十也已经过去了,很明显今年的面试季明显不如往年火热,对于求职者来说,也更难了一些。,综合来看今年确实不是面试的最佳时期,不过趁今年所剩的时间来好好准备,明年的金三银四或许会顺利得多。不过,对于今年的应届生来说,等到明年再去面试,竞争就更大了。不过,好在我们总能够找到一些好资源进行分享,今天分享的这份资料是2021年最新版Java架构面试合集,完整地看完之后,或许你就会觉得,应届生求职其实也没有那么难了。【注意,注意,文末获取答案】java基础八种基本数据原创 2020-12-08 19:50:27 · 596 阅读 · 1 评论 -
当面试官问你Spring Boot 中的监视器是什么?直接就这样回答稳拿offer
多年来,随着新功能的增加,spring 变得越来越复杂。只需访问https://spring.io/projects 页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。Spring Boot 是解决这个问题的方法。Spring Boot 已.原创 2020-12-01 21:59:25 · 722 阅读 · 0 评论 -
27岁,我在蚂蚁金服实现了我的财富自由
毕业快 5 年了,每当和人聊起自己的职场飞升之路,都不由得感激当初果断逃离舒适圈的自己。出身一所非 211、985 院校,毕业后入职了一家小型互联网公司,当着普普通通的入门工程师,工作期间虽然也时常遇到挑战,但手头的技术始终局限于表面,遇到稍微难点的实际问题就无从下手,也接触不到什么大型项目。这样的生活持续了 3 年,公司平台的局限性和自身能力的不足让一直怀抱着进大厂梦的我在这家公司逐渐失去了斗志,过着高不成低不就的日子,同时因不确定的未来感到非常不安。都说三年是程序员的一个坎,能否晋升或.原创 2020-12-01 17:16:34 · 918 阅读 · 0 评论 -
腾讯一面!说说ArrayList的遍历foreach与iterator时remove的区别,我一脸懵逼
1 简介ArrayList作为最基础的集合类,其底层是使用一个动态数组来实现的,这里“动态”的意思是可以动态扩容(虽然ArrayList可以动态扩容,但却不会动态缩容)。但是与HashMap不同的是,ArrayList使用的是1.5的扩容策略,而HashMap使用的是2的方式。还有一点与HashMap不同:ArrayList的默认初始容量为10,而HashMap为16。有意思的一点是:在Java 7之前的版本中,ArrayList的无参构造器是在构造器阶段完成的初始化;而从Java 7开始,改为了在ad原创 2020-11-28 21:18:29 · 332 阅读 · 0 评论 -
关于 TCP/IP,必知必会的十个问题
本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。TCP/IP十个问题一、TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。TCP/IP协议族按照层次由.原创 2020-11-26 13:46:51 · 461 阅读 · 0 评论 -
面试遇到MyBatis不要慌,看看这篇文章
MyBatis的实现逻辑在 MyBatis 的初始化过程中,会生成一个 Configuration 全局配置对象,里面包含了所有初始化过程中生成对象根据 Configuration 创建一个 SqlSessionFactory 对象,用于创建 SqlSession “会话”通过 SqlSession 可以获取到 Mapper 接口对应的动态代理对象,去执行数据库的相关操作动态代理对象执行数据库的操作,由 SqlSession 执行相应的方法,在他的内部调用 Executor 执行器去执行数据库的相原创 2020-11-23 15:28:53 · 1354 阅读 · 0 评论 -
Kubernetes 中如何保证优雅地停止 Pod
一直以来我对优雅地停止 Pod 这件事理解得很单纯: 不就利用是 PreStop hook 做优雅退出吗? 但这周听了组里大哥的教诲之后,发现很多场景下 PreStop hook 并不能很好地完成需求,这篇文章就简单分析一下”优雅地停止 Pod”这回事儿.何谓优雅停止?优雅停止(Graceful shutdown)这个说法来自于操作系统,我们执行关机之后都得 OS 先完成一些清理操作,而与之相对的就是硬中止(Hard shutdown),比如拔电源。到了分布式系统中,优雅停止就不仅仅是单机上进程自己的原创 2020-11-14 20:38:59 · 927 阅读 · 0 评论 -
一次打包引发的思考,原来maven还可以这么玩
前言昨天有一个读者找我的交流工作心得,偶然间提到一个有趣的问题,如下:「大致的意思」:公司最近在整多模块开发,由于模块之间相互依赖,每次打包都很烦,必须根据依赖关系逐一进行打包,有没有省事的办法呢?其实玩转Maven的朋友都知道,只需要一条命令即可解决问题。依赖关系假设有一个多模块项目,父工程P中含有三个子模块A、B、C,三个模块有如下的依赖关系:A 依赖 B、CB 依赖 C依赖关系图父工程P的pom.xml如下:.....<modules> <module原创 2020-11-09 14:30:11 · 240 阅读 · 0 评论 -
删除二叉搜索树中的节点
1.题目描述:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 3 5 / \ 3 6 / \ \2 4 7给定需要删除的节点原创 2020-11-07 14:25:50 · 314 阅读 · 0 评论 -
听说你想进大厂?当心这13个MySQL送命题!
想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里?1. 能说下myisam 和 innodb的区别吗?myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。2. 说下mysql的索引有哪些吧,聚簇和非聚簇原创 2020-11-06 23:22:06 · 214 阅读 · 0 评论 -
手把手教你10分钟快速部署Kubernetes集群
本文介绍的部署过程主要是为了让读者能够理解 K8S 的运行原理,为了简化流程,这里不涉及高可用、高性能等解决方案。安装说明:本文仅仅是在两个节点上部署所有的组件,如图所示包括 MASTER 和 NODE所有的组件都安装在 /opt/{component} 的根目录下,包括二进制文件和配置文件另外组件进程由 systemd 来管理,其配置文件在 /etc/systemd/system/{component}.service本文所有的安装代码已经放在 https://github.com/bil原创 2020-11-02 19:50:54 · 1040 阅读 · 0 评论 -
Springboot启动扩展点超详细总结,再也不怕面试官问了
1.背景Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生命周原创 2020-10-24 20:32:25 · 691 阅读 · 0 评论 -
面试官:说说CountDownLatch,CyclicBarrier,Semaphore的原理?
CountDownLatchCountDownLatch适用于在多线程的场景需要等待所有子线程全部执行完毕之后再做操作的场景。举个例子,早上部门开会,有人在上厕所,这时候需要等待所有人从厕所回来之后才能开始会议。public class CountDownLatchTest { private static int num = 3; private static CountDownLatch countDownLatch = new CountDownLatch(num); p原创 2020-10-22 16:42:27 · 198 阅读 · 0 评论 -
5年外包码农,拿到阿里offer,成功上岸,靠的全是它
前段时间,一个在外包待了5年的朋友跟我说,他拿到了阿里的Offer,并给我分享了一下他的面试过程,以及面试官问他的技术栈,现在,小编就把它分享给大家。小编分别从分布式、中间件、大数据与高并发、数据库、设计模式与实践、数据结构与算法、面试举例,这7个方面给大家进行分享。分布式一、大型网站系统的特点高并发,大流量高可用海量数据用户分布广泛,网络情况复杂安全环境恶劣需求快速变更,发布频繁渐进式发展二、大型网站架构演化发展历程初始阶段的网站架构应用服务和数据服务分离使用缓存改善网站原创 2020-10-15 20:19:14 · 601 阅读 · 0 评论 -
面试必问的41道 SpringBoot 面试题,不看亏大了!
1 什么是springboot ?用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)创建独立的spring引用程序 main方法运行嵌入的Tomcat 无需部署war文件简化maven配置自动配置spring添加对应功能starter自动化配置答:spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用2 Springboot 有哪些优点?快速创建独立运行的spri原创 2020-10-10 17:31:18 · 1784 阅读 · 1 评论 -
一文弄懂面试必考的HashMap
1 概述HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长.HashMap是非线程安全的,只适用于单线程环境,多线程环境可以采用并发包下的concurrentHashMapHashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的原创 2020-10-07 19:11:34 · 214 阅读 · 1 评论 -
面试官:你怎么连MySQL死锁产生原因都不知道?
一、Mysql 锁类型和加锁分析1、锁类型介绍:MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般算法:next KeyLocks锁,同时锁住记录(数据),并且锁住记录前面的GapGap锁,不锁记录,仅仅记录前面的GapRecord原创 2020-10-07 16:02:34 · 354 阅读 · 1 评论 -
面试官:连CopyOnWriteArrayList都没听过
写入时复制(CopyOnWrite)思想写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此做法主要的优点是如果调用者没有原创 2020-10-07 14:07:01 · 258 阅读 · 0 评论 -
破解B站面试套路,顺利拿到Offer
1 操作系统相关自旋锁和一般锁的区别是什么?为什么要使用自旋锁?当一个线程在获取锁的时候,如果这个锁已经被其他线程获取,那么这个线程不会破门而入,而是循环等待,但是嗷嗷待哺,需要不断地嗷嗷叫判断锁是否被成功获取,直到获取到锁才会退出循环。自旋锁通常会出现哪些问题?如果某个线程拿着锁死不放手,其他线程没法拿到这把锁,只好等待获取锁的线程进入循环等待的状态,等待不是睡觉,还是会消耗CPU,等待久了就会导致CPU的使用率太高。那么自旋锁和其他锁到底有啥不同?从线程状态来看,自旋锁的状态是运原创 2020-09-30 17:04:18 · 646 阅读 · 0 评论 -
不会把if-else重构成高质量代码的程序员,不是个优秀的程序员
为什么我们写的代码都是 if-else?程序员想必都经历过这样的场景:刚开始自己写的代码很简洁,逻辑清晰,函数精简,没有一个 if-else,可随着代码逻辑不断完善和业务的瞬息万变:比如需要对入参进行类型和值进行判断;这里要判断下对象是否为 null;不同类型执行不同的流程。落地到具体实现只能不停地加 if-else 来处理,渐渐地,代码变得越来越庞大,函数越来越长,文件行数也迅速突破上千行,维护难度也越来越大,到后期基本达到一种难以维护的状态。虽然我们都很不情愿写出满屏 if-else 的代码,可逻原创 2020-09-30 14:59:15 · 218 阅读 · 0 评论 -
Redis 面试 8 连问,你能顶住几道?
1、如何保证Redis高可用和高并发?Redis主从架构,一主多从,可以满足高可用和高并发。出现实例宕机自动进行主备切换,配置读写分离缓解Master读写压力。2、Redis高可用方案具体怎么实施?使用官方推荐的哨兵(sentinel)机制就能实现,当主节点出现故障时,由Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。它有四个主要功能:集群监控,负责监控redis master和slave进程是否正常工作。消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警原创 2020-09-29 14:18:50 · 194 阅读 · 0 评论 -
听我的,看完MyBatis执行过程后你再去面试
前言在了解了MyBatis初始化加载过程后,我们也应该研究看看SQL执行过程是怎样执行?这样我们对于Mybatis的整个执行流程都熟悉了,在开发遇到问题也可以很快定位到问题。更重要的,在面试中遇到面试官咨询Mybatis的知识点的时候,可以很顺畅的把这一套流程讲出来,面试也会觉得你已掌握Mybatis知识点了。SQL执行过程简介经过MyBatis初始化加载Sql执行过程所需的信息后,我们就可以通过 SqlSessionFactory 对象得到 SqlSession ,然后执行 SQL 语句了,接下来原创 2020-09-28 21:25:26 · 203 阅读 · 0 评论 -
感动!我终于理清楚Netty内存管理了
前言正是Netty的易用性和高性能成就了Netty,让其能够如此流行。而作为一款通信框架,首当其冲的便是对IO性能的高要求。不少读者都知道Netty底层通过使用Direct Memory,减少了内核态与用户态之间的内存拷贝,加快了IO速率。但是频繁的向系统申请Direct Memory,并在使用完成后释放本身就是一件影响性能的事情。为此,Netty内部实现了一套自己的内存管理机制,在申请时,Netty会一次性向操作系统申请较大的一块内存,然后再将大内存进行管理,按需拆分成小块分配。而释放时,Netty原创 2020-09-27 16:25:20 · 305 阅读 · 0 评论 -
Mybatis 面试题,你想知道的都在这里了!
1、#{}和${}的区别是什么?注:这道题是面试官面试我同事的。答:是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如{}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如{driver}会被静态替换为com.mysql.jdbc.Driver。#{}是sql的参数占位符,Mybatis会将sql中的#{}替原创 2020-09-09 14:16:14 · 213 阅读 · 0 评论 -
Redis 面试一定要知道的 3 个 问题!
一、缓存穿透缓存穿透是指当用户在查询一条数据的时候,而此时数据库和缓存却没有关于这条数据的任何记录,而这条数据在缓存中没找到就会向数据库请求获取数据。它拿不到数据时,是会一直查询数据库,这样会对数据库的访问造成很大的压力。如:用户查询一个 id = -1 的商品信息,一般数据库 id 值都是从 1 开始自增,很明显这条信息是不在数据库中,当没有信息返回时,会一直向数据库查询,给当前数据库的造成很大的访问压力。一般我们可以想到从缓存开始出发,想如果我们给缓存设置一个如果当前数据库不存在的信息,把它缓存成原创 2020-09-08 16:01:15 · 5153 阅读 · 0 评论 -
头条二面:宕机后,Redis如何实现快速恢复?
Redis作为非常火热的内存数据库,其除了具有非常高的性能之外,还需要保证高可用,在故障发生时,尽可能地降低故障带来的影响,Redis也提供了完善的故障恢复机制:哨兵。下面就来具体来看看Redis的故障恢复是如何做的,以及其中的原理。部署模式Redis在部署时,可以采用多种方式部署,每种部署方式对应不同的可用级别。单节点部署:只有一个节点提供服务,读写均在此节点,此节点宕机则数据全部丢失,直接影响业务。master-slave方式部署:两个节点组成master-slave模式,在master上写原创 2020-09-04 19:23:22 · 255 阅读 · 0 评论 -
Spring Cloud面试8连问,谁顶得住?
问题一:什么是 Spring Cloud?Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。问题二:使用 Spring Cloud 有什么优势?使用 Spring Boot 开发分布式微服务时,我们面临以下问题与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。服务发现-服务发现工具管理群原创 2020-09-04 14:59:17 · 234 阅读 · 0 评论 -
面试官:我就问了一个JVM性能调优,没想到他能吹半个小时
一、JVM内存模型及垃圾收集算法1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,由虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。年轻代(New):年轻代用来存放JVM刚分配的Java对象年老代(Tenured):年轻代中经过垃圾回收没有回收掉的对象将被Cop原创 2020-08-31 19:23:13 · 349 阅读 · 0 评论 -
21个MongoDB经典面试题
1、什么是MongoDB?MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库。采用BSON存储文档数据。BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON.相对于json多了date类型和二进制数组2、MySQL与MongoDB之间最基本的差别是什么?MySQL和MongoDB两者都是免费开源的数据库。MySQL和MongoDB有许多基本差别包括数据的表示(data representation),查询,关系,事务,schema的设计和定义,标准化(原创 2020-08-24 21:45:19 · 6905 阅读 · 0 评论 -
面试官想问的Java问题,都在这篇文章中了!
2020,可谓是招聘面试最难季。不少大厂,如腾讯和字节的招聘名额明显减少,面试门槛却一再拔高,如果不用心准备,很可能就被面试官怼得哑口无言。今天我讲给大家分享一份资深Java架构师花费几个月整理的Java工程师的学习笔记,希望大家能够通过这份笔记了解大厂面试经常会被问到的一些问题,以及或许会给大家分享的一些面试真题。警告!警告!特大警告!所有的资料及文档小编已经整合,需要的朋友可以点击下方链接获取Java学习交流,面试题,视频,PDF资料文档资料包专注于java技术,包括Kafka、Mysql、原创 2020-08-23 21:32:44 · 334 阅读 · 0 评论 -
面试官:你对Kafka了解吗?这41个问题你能答出几个
一、请说明什么是Apache Kafka?Apache Kafka是由Apache开发的一种发布订阅消息系统,它是一个分布式的、分区的和重复的日志服务。二、请说明什么是传统的消息传递方法?传统的消息传递方法包括两种:排队:在队列中,一组用户可以从服务器中读取消息,每条消息都发送给其中一个人。发布-订阅:在这个模型中,消息被广播给所有的用户。三、 请说明Kafka相对传统技术有什么优势?快速:单一的Kafka代理可以处理成千上万的客户端,每秒处理数兆字节的读写操作。可伸缩:在一组机器上对原创 2020-08-23 19:23:26 · 507 阅读 · 0 评论 -
Java面试不通过?RabbitMQ你熟悉了吗?
1.rabbitmq 的使用场景有哪些?①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。②. 多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。基于消息队列的耦合,不需要发送方和接收方同时在线。在企业应用集成(EAI)中,文件传输,共享数据库,消息队列,远程过程调用都可以作为集成的方法。③. 应用内的同步变异步,比如订单处理,就可以由前端原创 2020-08-09 19:54:08 · 236 阅读 · 0 评论 -
面试官问我MySQL怎么递归查询,我懵逼了
Oracle 递归查询在 Oracle 中是通过 start with connect by prior 语法来实现递归查询的。按照 prior 关键字在子节点端还是父节点端,以及是否包含当前查询的节点,共分为四种情况。prior 在子节点端(向下递归)第一种情况: start with 子节点id = ’ 查询节点 ’ connect by prior 子节点id = 父节点idselect * from dept start with id='1001' connet by prior id=原创 2020-08-06 20:30:16 · 310 阅读 · 0 评论 -
当面试官问我Nginx如何实现负载均衡,我这么答让他眼前一亮
负载均衡介绍在介绍Nginx的负载均衡实现之前,先简单的说下负载均衡的分类,主要分为硬件负载均衡和软件负载均衡,硬件负载均衡是使用专门的软件和硬件相结合的设备,设备商会提供完整成熟的解决方案,比如F5,在数据的稳定性以及安全性来说非常可靠,但是相比软件而言造价会更加昂贵;软件的负载均衡以Nginx这类软件为主,实现的一种消息队列分发机制。简单来说所谓的负载均衡就是把很多请求进行分流,将他们分配到不同的服务器去处理。比如我有3个服务器,分别为A、B、C,然后使用Nginx进行负载均衡,使用轮询策略,此时如原创 2020-08-05 19:33:31 · 584 阅读 · 0 评论 -
Redis的这些都没有掌握,你还想要拿Offer?
Redis 简介Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库Redis 与 其他 key - value 缓存产品有以下三个特点:Redis 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key - value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。Redis 支持数据的备份,即 master - slave 模式的数据备份。Redis原创 2020-08-04 22:00:38 · 217 阅读 · 0 评论 -
美团、饿了么面试绝命7问,你能接几招
问题1:解释一下对象的创建过程;先看以下代码:public static void main(String[] args){Object o = new Object();}此方法产生以下字节码文件:0 new #5 <java/lang/Object>3 dup4 invokespecial #1 <java/lang/Object.<init>>7 astore_18 return上述字节码中最重要的是1,3,4条,顺序为:1、原创 2020-08-02 21:59:36 · 544 阅读 · 0 评论 -
面试官,我已经掌握了MyBits,你看我还有机会吗?
一、MyBatis 面试题1、什么是 Mybatis?2、Mybaits 的优点:3、MyBatis 框架的缺点:4、MyBatis 框架适用场合:5、MyBatis 与 Hibernate 有哪些不同?6、#{}和${}的区别是什么?7、当实体类中的属性名和表中的字段名不一样 ,怎么办 ?8、 模糊查询 like 语句该怎么写?9、通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?10原创 2020-08-02 19:48:25 · 354 阅读 · 0 评论 -
不懂这些怎敢在简历上写会用Jackson写JSON
一个框架/库好不好,不是看它的核心功能做得怎么样,而是非核心功能处理得如何。比如后台页面做得咋样?容错机制呢?定制化、可配置化,扩展性等等。Jackson称得上优秀(甚至最佳)最主要是得益于它优秀的module模块化设计,在接触其之前,我们先完成本章节的内容:JsonGenerator写JSON的行为控制(配置)。配置属于程序的一部分,它影响着程序执行的方方面面。Spring使用Environment/PropertySource管理配置,对应的在Jackson里会看到有很多Feature类来控制Jac原创 2020-07-31 19:44:09 · 989 阅读 · 0 评论 -
20道java集合源码面试题,请笑纳
问题一:看到这个图,你会想到什么?答:这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类(子接口),这里的意思是指Map的KeySet获取到的一个视图是Collection的子接口。我们可以看到集合有两个基本接口:Map和Collection。但是我个人认为Map并不能说是一个集合,称之为映射或许更为合适,因为它的KeySet视图是一个Set类型的键集,所以我们姑且把它也当做集合。Collection继承了Iterator接口,而Iterator原创 2020-07-30 22:09:47 · 716 阅读 · 0 评论 -
面试前看过这篇文章就好了
一 、java基础面试1.1面向对象和面向过程的区别面向过程:优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗 资源;应用场景:单片机、嵌入式开发、Linux/Unix ;缺点:没有面向对象易维护、易复用、易扩展。面向对象:优点:因为面向对象有封装、继承、多态性的特 性,可以设计出低耦合的系统,故易维护、易复用、易扩展;应用场景:网页开发,后台开发等;缺点:性能比面向过程低。1.2 面向对象的特性封装: 将一个对象的属性私有化,并提供一个对外访问的方法;原创 2020-07-30 20:15:11 · 306 阅读 · 0 评论