- 博客(134)
- 资源 (38)
- 收藏
- 关注

原创 基础 | 36个经典面试题,来测一测您的Java基础
到此为止,「Java基础」系列的面试点已更新完毕,但关于Java IO和Java8新特性部分的内容还停留在概述阶段,不够系统和深入,后续有机会再深入学习和更新。在此,主要将Java基础系列以面试题的形式进行汇总,用做面试前的准备与自测提纲。公众号后台回复关键字:Java基础,获取完整版Java基础系列文章,可用作面试前的系统准备和复习。Java基础面试自测提纲面向对象的特征有哪些?...
2018-11-05 09:59:48
1117
1
转载 2018 年度代码报告
作者:枕边书 链接:https://zhenbianshu.github.io最近,网易云音乐、B站等 APP 都放出了用户的 2018 年度使用报告,在朋友圈掀起了一股年度报告的热潮,我昨天在刷微博时看到”精分君”分享的《年度骂人报告》后,在被笑得眼泪都出来的同时,也在想我是不是也可以出一个《年度代码报告》呢?收集信息得益于今年工作的稳定,所有本地代码仓库都老实地放在各个 je...
2019-01-07 12:48:10
662
原创 总结 | 2018 年终总结
最近罗胖的「时间的朋友」跨年演讲刷遍了票圈,20 年的承诺,这是第四次,也是倒数第十七次演讲,而我却是第一次听,实则惭愧。刚刚算是把四个小时的演讲完全听下来,学到了小趋势、事情真相、非共识、百年人生、人的逻辑和长期主义等关键词,里边涉及到很多颠覆个人认知的例子,建议没看过的朋友抽时间静下来感受一下。整个演讲的核心思想即是在告诉我们,世界已经由「大河模型」变成了「多米洛骨牌模型」,2018 年开...
2019-01-06 15:06:47
1973
3
转载 非好学校科班出身的程序员,该如何快速提升自己
作者:hsm_computer 链接:https://www.cnblogs.com/JavaArchitect/p/9854238.html目前一般的大点的公司,往往会在招聘时(尤其在招聘3年以下工作经验的程序员时)会设置学校的门槛,比如需要211或985相关专业毕业。这里我无意贬低不在这个范围的程序员,相反在本文里还将根据我所见和我所闻,为这些同学给出发展的建议。首先我用我的切身体会给...
2018-12-02 09:03:23
724
原创 面经 | 闲来无事,百度一下
记得9月份秋招的时候和朋友说过一句话:如果不知道做什么的话就去面试吧,现在想起来当时的情景还是五味杂陈!更新一波梳理的百度(深圳)的Java后台面经(带答案),面经来源:https://www.nowcoder.com/discuss/124753 。一面1. 使用过哪些linux命令?基本指令:ls、mkdir、cd、touch、echo、cat、cp、mv、rm、find、gre...
2018-11-27 10:24:47
624
原创 计算机开机背后的故事(预备篇)
各位粉爷们,实在不好意思,断更这么多天,先给大家道个歉。说一个最近的经历,和小伙伴一起面试了一家不错的外企,包括基本问答和手撕代码。幸运的是,我们都通过了面试顺利拿到offer,但不幸的是,我的月薪资比小伙伴低400块,属于第二档工资,总共的话应该有至少四档工资。说实话,刚开始知道的时候心里肯定很不是滋味,但仔细想想面试过程,手撕代码环节表现确实很nice,但基本问答中确实有两三个涉及底层的问...
2018-11-20 10:40:43
332
转载 三分钟学会看大型项目的源码
作者:Jerish_C 来源:优快云原文:https://blog.youkuaiyun.com/u012999985/article/details/80877671最近有朋友突然问我一个问题 “你怎么把UE4引擎代码看的那么深入的?”看到问题后我还愣了一下,因为这是第一次有人给我打了个「深入UE4」的标签。其实我接触虚幻引擎满打满算也就两年,确实谈不上深入。只是靠着平时的学习习惯积累,写了...
2018-11-11 18:41:37
3255
原创 基础 | Java8新特性之Lambda表达式
Lambda表达式是Java8所引入的新特性之一,其基于函数式接口,以极大地减少代码冗余,并提高代码的可读性。Lambda表达式的基本语法参考答案:Java8中引入箭头操作符(也叫Lambda操作符)将Lambda表达式拆分成左右两部分:左侧:指定Lambda表达式的参数列表;右侧:指定Lambda表达式所要执行的功能,即Lambda体。// 1).无参数,无返回值Runna...
2018-11-03 10:00:10
2133
原创 基础 | BIO、NIO与AIO
Java中的IO部分比较复杂,具体可参看书籍《Java NIO》和《Netty权威指南》。在此,仅对BIO、NIO和AIO进行概述性梳理,未涉及到具体实现细节,后续有空将深入展开。同步IO和异步IO参考答案:IO操作主要分为两个步骤,即发起IO请求和实际IO操作,同步IO与异步IO的区别就在于第二个步骤是否阻塞。若实际IO操作阻塞请求进程,即请求进程需要等待或者轮询查看IO操作是否就绪...
2018-11-02 08:57:37
7021
原创 基础 | Java中四种引用的区别
在JDK 1.2之前,Java中的引用定义为:如果引用类型的数据中存储的数值代表的是另一块内存的起始地址,则这块内存即代表着一个引用。故在该定义下,一个Java对象仅有被应用和未被引用两种状态。在JDK 1.2之后,Java对引用的概念进行了扩充,将引用分为强引用、软引用、弱引用和虚引用。这四种引用与Java虚拟机的垃圾回收机制紧密关联,建议重点关注。Java中四种引用有什么区别?参考答...
2018-11-02 08:57:20
939
原创 基础 | Java序列化与反序列化的底层实现
在深拷贝与浅拷贝中,提到可以采用「序列化与反序列化」的方式来实现深拷贝,今天主要来填一下序列化的坑。其中,序列化是一种对象持久化的手段,普遍应用于网络传输和远程方法调用(RMI)等场景中,建议关注。什么是Java序列化和反序列化?参考答案:在Java中,序列化是指将Java对象转换为字节序列的过程,而反序列化是指将字节序列转换为Java对象的过程。其中,字节序列即是二进制数据,可以方便...
2018-11-01 10:57:08
2578
原创 基础 | final、finally与finalize
Java中的final关键字、异常处理中的finally代码块和Object类中的finalize()方法都是比较基础且重要的部分,面试时也经常被问到「final、finally与finalize的区别」,务必重点关注。谈谈final、finally与finalize的区别?参考答案:关键字final表示「最终的」,可用来修饰类、属性和方法.修饰类:表示该类不能被继承,以提高程序的安...
2018-11-01 10:49:22
177
原创 基础 | Exception与Error
关于Java中异常处理部分,面试时经常会被问到 「Exception与Error有什么区别?」,建议重点关注。Exception与Error有什么区别?问题分析:既然问到两者的区别,说明两者是有必然联系的,故简单从两者的联系说起,重点突出两者的区别,最后可选择性的介绍Exception的体系结构。参考答案:联系:Exception和Error都继承于Throwable类,在Java中只...
2018-11-01 10:46:39
244
原创 基础 | String、StringBuffer与StringBuilder
String类作为Java中的常用类,是各大公司面试时非常喜欢问到的地方,主要是String类够基础,但基础中又会延伸出很多相关技术点,比如final关键字、Java内存分配、Java虚拟机、线程安全等。今天就主要分析一下 「String、StringBuffer和StringBuilder类以及三者之间的联系与区别」,需要重点关注,如有问题也可留言交流。你了解String类吗?问题分析...
2018-11-01 10:45:00
177
原创 基础 | Java的反射与动态代理
关于「反射」请参看Class类详解(反射)部分。动态代理作为Java反射的主要应用之一,其在多种JavaEE框架中均有使用,如Spring框架中AOP的实现原理就是动态代理,面试中提到AOP也必定会问 「谈谈对动态代理的理解?」 相关问题,在此做一个梳理与总结。谈谈对动态代理的理解?动态代理作为设计模式中动态代理模式的一部分,其和静态代理构成鲜明对比。下面分别对代理模式、静态代理和动态代...
2018-11-01 10:43:18
1370
原创 基础 | Java的深拷贝与浅拷贝
Object类中的clone()方法定义如下: /** * 仅对本包下的所有类和当前类的子类可见。 * 只有实现Cloneable接口的类的对象才能调用该方法,否则会抛出异常 */protected native Object clone() throws CloneNotSupportedException;该方法本质上是一种对对象的「浅拷贝」,那么 「浅拷贝与深拷贝分别是...
2018-11-01 10:09:34
630
原创 基础 | Class类详解
Object类中的getClass()方法即返回一个Class类型的实例,那么 「Class类到底是什么?从何而来?又有什么作用呢?」参考答案Class类是什么?先来简单了解一下Java虚拟机中类的加载过程:「加载」阶段是「类加载」过程的第一个阶段,虚拟机需要完成以下三件事情:通过一个类的全限定名来获取定义此类的二进制字节流(.class文件即保存着类的二进制数据)。将该字节流所...
2018-11-01 10:07:11
796
原创 基础 | 重写hashCode方法
参加美团秋招面试时,被问到 「如何重写hashCode方法?重写hashCode()方法需要注意什么?」,在此做一个系统的总结与梳理,同时也填一下之前埋下的坑,哈哈。参考答案为什么要重写hashCode()方法?Object类中hashCode()方法默认是将对象的存储地址进行映射,并返回一个整形值作为哈希码。若重写equals()方法,使其比较两个对象的内容,并保留hashCode(...
2018-11-01 09:25:17
886
2
原创 基础 | 重写equals方法
参加VIVO秋招面试中,在回答「Object类有哪些方法?每个方法分别有什么作用?」问题时,提到equals()方法,就又被问到 「在重写equals()方法需要注意什么?」,顿时就一脸懵逼,这也是面试「Java开发工程师」过程中的高频问题,在此进行一个系统的总结与梳理。参考答案为什么要重写equals()方法?Object类中equals()方法的默认实现主要是用于判断两个对象的引用是否...
2018-11-01 09:22:13
572
原创 基础 | Object类详解
「Object类有哪些方法?每个方法分别有什么作用?」 是面试「Java开发工程师」过程中的高频问题,我在参加海康威视和VIVO的秋招面试中均被问到过,在此进行一个系统的总结与梳理。参考答案Object类位于java.lang包下,是Java中所有类的始祖,其包含的方法列表如下:各方法的具体说明如下:Object(): Object类中并没有显式声明该构造方法,其是由编译器自动为其创建...
2018-11-01 09:17:45
366
原创 基础 | Java的内部类
「内部类」 在面试时问的并不是很多,但是本人在面试Synopsys时就被问到过,建议还是要重点关注一下。相信大家对于内部类都不陌生,但肯定也会感觉不太熟悉,因为在开发中的应用场景并不是很多,在此主要梳理一下 「谈谈对内部类的理解?在什么场景中使用过内部类?」 相关问题。谈谈对内部类的理解?在Java中,可以将一个类定义在另一个类里面或一个方法内,这样的类即被称为内部类,其框架体系如下:...
2018-10-31 18:48:47
140
原创 基础 | Java的接口与抽象类
在Java中,四大基本特性的「抽象性」是通过两种方式来体现的,包括接口和抽象类。两者看似相同,实则有很多不同之处,面试中也经常会被问到 「谈谈对接口与抽象类的理解?接口与抽象类有什么区别?两者分别在什么场景中使用?」 等问题,在此做一个系统的梳理与总结,建议重点关注。谈谈对接口与抽象类的理解?接口是对行为的抽象,其可以含有属性和方法。属性被隐式指定为public static final...
2018-10-31 18:46:51
161
原创 基础 | 关键字final
考虑篇幅问题,Java基础系列的「关键字static与final」部分将分两次进行梳理,本次主要总结「final关键字」。面试时也经常被问到「final关键字」的相关问题,如 「谈谈对final关键字的理解?final修饰的基本类型变量和引用类型变量有什么区别?如何初始化final所修饰的成员变量?」,建议重点关注。谈谈对关键字final的理解?关键字final表示「最终的」,可用来修饰类...
2018-10-31 18:44:35
222
原创 基础 | 关键字static
考虑篇幅问题,Java基础系列的「关键字static与final」部分将分两次进行梳理,本次主要总结「static关键字」。面试时也经常被问到「static关键字」的相关问题,如 「谈谈对static关键字的理解?static有哪几种用法?静态内部类与普通内部类有什么区别?Java中变量的初始化顺序是怎样的?」,建议重点关注。谈谈对关键字static的理解?关键字static表示「静态的」...
2018-10-31 18:41:55
200
原创 基础 | Java的重写与重载
Java四大基本特性中在介绍「多态性」时,提到过编译时多态和运行时多态。编译时多态是由方法重载来实现的,而运行时多态是由方法重写来实现的。建议重点关注Java中 「重写与重载构成的基本条件」 相关问题。什么是重载和重写?重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载。重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法...
2018-10-31 18:40:09
246
原创 基础 | 基本数据类型与引用数据类型
Java数据类型应该算是最基础的了,面试时问到的也不是特别多,在此也仅做一个简单的梳理,大家简单浏览即可。建议重点关注Java中 「基本数据类型转换」 的相关问题。Java有哪些基本数据类型?Java中的基本数据类型只有8个:byte(1字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)、char(1字节)、boolean。对...
2018-10-31 18:38:41
248
原创 基础 | Java的四大访问修饰符
「Java中四大访问修饰符」 的相关问题在面试的时候很少被问到,但还是需要足够理解。相信大家对public、private和默认的修饰符都比较了解,用的也比较多,但你真的了解protected修饰符吗?建议重点关注Java中 「protected权限修饰符」 的相关问题。Java中四大访问修饰符Java中的访问控制主要分四种级别,如下表:修饰符当前类同包子类其他包...
2018-10-31 18:37:05
812
原创 基础 | Java的四大基本特性
秋招面试时经常被问到 「Java有哪些基本特性?面向对象的特征有哪些?谈谈对Java中多态的理解?在项目中哪些地方用到过多态?」,这个问题还是比较基础的,但基础问题不见得每个人都能回答的很好,最重要的还是要足够理解并准确表达。建议重点关注Java中「多态性」的相关问题。Java有哪些基本特性?等价于,面向对象的特征有哪些?抽象:将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行...
2018-10-31 18:35:21
1411
原创 SSM整合-03 信息新增、修改与删除
该部分主要实现新员工信息的添加,实现步骤包括:在index.jsp页面点击“新增按钮”,弹出新增对话框;向数据库中查询全部部门名称列表,显示在对话框中;输入新员工数据,并进行校验(jQuery前端校验、Ajax姓名重复校验、重要数据后端JSR303校验、数据表唯一性约束);完成保存操作。其中,新增员工的模态框如下所示: 注意:前端需要校验员工姓名与邮箱格式的正确性以及姓名是...
2018-10-16 22:06:41
4199
原创 SSM整合-02 信息查询
访问index.jsp页面 index.jsp页面发送出查询员工列表请求 • 3、 EmployeeController来接受请求,查出员工数据 • 4、来到list.jsp页面进行展示 • 5、 pageHelper分页插件完成分页查询功能...
2018-07-31 09:59:43
746
原创 SSM整合-01 基础环境搭建
SSM高级整合项目即采用Spring、SpringMVC和MyBatis框架实现增删改查操作,主要功能点包括分页、数据校验(jQuery前端校验和JSR303后端校验)、AJAX请求及REST风格的URI等。SSM高级整合项目的技术点包括:基础框架-SSM(Spring + SpringMVC + MyBatis)项目依赖管理Maven数据库-MySQL前端框架-Bootstrap...
2018-07-26 18:20:19
411
原创 MyBatis-09 扩展
1. 分页功能具体使用可参见github中的官方说明,地址为:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md。实现步骤:导入相关包pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar;在MyBatis全局配置文件中配置分页插件;使用...
2018-07-16 10:44:53
367
原创 MyBatis-08 插件开发
MyBatis在四大对象的创建过程中,都会有插件进行介入。 插件可以利用动态代理机制一层层的包装目标对象,而实现在目标对象执行目标方法之前进行拦截。MyBatis允许在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback,g...
2018-07-13 19:16:39
378
原创 MyBatis-07 运行原理
MyBatis框架的使用主要包含如下步骤:获取SqlSessionFactory对象;获取SqlSession对象;获取接口的代理对象(MapperProxy);执行增删改查方法。1. 根据配置文件创建SqlSessionFactory对象具体创建流程如下图所示: 其中,第8步和第9步的DefaultSqlSession应改为DefaultSqlSessionFac...
2018-07-13 16:28:08
132
原创 MyBatis-06 逆向工程
MyBatis Generator,简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据数据表表生成对应的JavaBean、Mapper接口和SQL映射文件。且支持基本的增删改查,以及QBC风格的条件查询。但是表连接、存储过程等复杂SQL的定义则需要手工编写。官方文档地址为http://www.mybatis.org/generator/,官方工程地址为https:...
2018-07-12 20:42:19
239
原创 MyBatis-05 缓存机制
MyBatis框架具有非常强大的查询缓存特性,可以非常方便地配置和定制,能够极大提升查询效率。MyBatis框架默认定义了两级缓存,即一级缓存和二级缓存。默认情况下,只有一级缓存开启,而二级缓存需要手动开启和配置。一级缓存是SqlSession级别的缓存,也称为本地缓存,而二级缓存是基于namespace级别的缓存。为了提高扩展性,MyBatis框架定义了缓存接口Cache,可通过实...
2018-07-12 15:53:33
1593
原创 MySQL-04 动态SQL
由于本部分内容在SQL映射文件中均按序号注释清楚,故在此仅给出SQL映射文件的具体内容和对应接口类的声明方法。具体请以SQL映射文件为提纲进行查阅。其中,MyBatis中动态SQL的具体测试代码下载地址:https://download.youkuaiyun.com/download/bingbeichen/10529837。SQL映射文件的具体配置如下:<mapper namespac...
2018-07-09 16:07:08
443
原创 MyBatis-3 SQL映射文件
映射文件指导着MyBatis如何进行数据库增删改查,有着非常重要的意义,主要包括如下的第一类元素: 元素 描述 cache 命名空间的二级缓存配置 cache-ref 其他命名空间缓存配置的引用 resultMap 自定义结果集映射 parameterMap 已废弃,老式风格的参数映射 sql 抽取可重用语句块 ...
2018-07-07 15:19:35
273
SpringMVC-7 RESTful CRUD
2017-03-27
SpringMVC-4 处理模型数据
2017-03-25
SpringMVC-3 映射请求参数和请求头
2017-03-24
SpringMVC-1 概述与HelloWorld实现
2017-03-23
SpringMVC-2 使用@RequestMapping映射请求
2017-03-23
SpringMVC概述与HelloWorld实现
2017-03-23
Spring整合Hibernate
2017-03-20
Spring对JDBC的支持
2017-03-16
吐血整理Java基础系列面试题-完整带答案版
2018-11-05
基于SSM框架的员工信息管理实现
2018-08-02
Mybatis-04 动态SQL
2018-07-09
Mybatis-03 SQL映射文件
2018-07-09
JPA-2 基本注解
2017-04-06
SpringMVC-15 Spring整合SpringMVC
2017-03-31
SpringMVC-13 异常处理
2017-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人