记录某公司(简称SMKJ) 的一次面试

昨天去了一家公司面试 Java 开发岗位,这篇文章主要是做一个面试的记录以及总结。 这家公司的规模大概100 200人,环境还可以,在一栋大厦租了两层办公室(31层和32层)。一同搭电梯上去的还有一位去应聘测试岗位的妹纸 »

03 Spring的父子容器

1、概念理解和知识铺垫 在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关系,目前最常见的一种场景就是在一个项目中引入Spring和SpringMVC这两个框架,那么它其实就 ... »

02 浅析Spring的AOP(面向切面编程)

1、关于AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。OOP允许开发者定 ... »

03 JVM的垃圾回收机制

1、前言 理解JVM的垃圾回收机制(简称GC)有什么好处呢?作为一名软件开发者,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java程序。 在学习GC前,你应该知道一个技术名词:“stop the world” ,无论你选择哪种GC算法,“stop the ... »

02 Java类的加载机制

1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并向程 ... »

01 深入理解JVM的内存区域

先来看看JVM运行时候的内存区域,如下图: ![][1] 大多数 JVM 将内存区域划分为 Heap(堆)、方法区、Stack(栈)、本地方法栈、程序计数器。其中 Heap 和 方法区 是线程共享的,Stack、本地方法栈 和 程序计数器 是非线程共享的。为什么分为线程共享和非线程共享的呢?请继续往 ... »

Java面试题库及答案解析

1、面向对象编程(OOP)有哪些优点? 代码开发模块化,更易维护和修改。 代码复用。 增强代码的可靠性和灵活性。 增加代码的可理解性。 2、面向对象编程有哪些特性? 封装、继承、多态、抽象 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Jav ... »

019 单例模式的5种写法

单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点! 1、懒汉 2、饿汉 3、双重校验锁 4、枚举 5、静态内部类 本文永久更新地址: "https://github.com/nnngu/LearningNotes/blob/master/Java%20Basis/019%20%E ... »

017 Java中的静态代理、JDK动态代理、cglib动态代理

一、静态代理 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。 静态代理由业务实现类、业务代理类两部分组成。业务实现类负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截、过滤、预处理。在需要调用业务时,不是直接通过业务实现类来调用的, ... »

MySQL 存储过程的简单使用

首先创建一张 students 表 SQL脚本如下: ![][1] ![][2] 不带参数的存储过程 执行存储过程: ![][3] 带参数的存储过程 执行存储过程: ![][4] 带有输出参数的存储过程 MySQL 支持 in (传递给存储过程),out (从存储过程传出) 和 inout (对存储 ... »

01 Mybatis 的配置和使用

一、Mybatis 是什么 ![][1] MyBatis 是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Pl ... »

Spring MVC的配置和使用

Spring MVC的配置和使用 笔记仓库: "https://github.com/nnngu/LearningNotes" Spring MVC需要的jar包 文章中 Spring MVC 使用的版本是 3.2.18 , 需要的 jar 包如下: 使用 Maven 构建的 Java 项目,需要在 ... »

用js实现2048小游戏

用js实现2048小游戏 笔记仓库: "https://github.com/nnngu/LearningNotes" 1、游戏简介 2048是一款休闲益智类的数字叠加小游戏。 (文末给出源代码和演示地址) 2、游戏玩法 在 4 4 的16宫格中,您可以选择上、下、左、右四个方向进行操作,数字会按方 ... »

Struts2的配置和一个简单的例子

Struts2的配置和一个简单的例子 笔记仓库: "https://github.com/nnngu/LearningNotes" 简介 这篇文章主要讲如何在 IntelliJ IDEA 中使用 Struts2,文章使用的 Struts2 的版本是2.5.14.1,与其他的版本有一点差别,在文章里已 ... »

基于 React + Webpack 的音乐相册项目(下)

上一篇我们完成了音乐相册里面的播放图片的功能,这一篇主要完成的是音乐相册里面的音乐播放器功能。最终让我们基于 React 的音乐相册图文并茂、有声有色。 我们主要从以下几个部分来展开: 数据准备 进度条功能 创建播放器组件 最终效果 数据准备 在 目录添加音乐数据文件: 代码如下: 进度条功能 1、 ... »

基于 React + Webpack 的音乐相册项目(上)

笔记仓库: "https://github.com/nnngu/LearningNotes" "上一篇文章用爬虫自动下载了一些图片" ,这一篇就用这些图片做一个音乐相册吧! 效果预览 ![][1] 点击图片,切换到背面: ![][2] 演示地址 演示地址: "https://nnngu.github ... »

如何用Python爬虫实现百度图片自动下载?

Github: "https://github.com/nnngu/LearningNotes" 制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或者XPath表达式 正式编写 python 爬虫代码 效果预览 运行效果如下: ![][1] ... »