设计模式

分享一个爱奇艺的笔试题

本小妞迷上赌 提交于 2021-02-05 10:04:33
1、重载重写的区别? 2、转发和重定向的区别? 3、画下 HashMap 的结构图?HashMap 、 HashTable 和 ConcurrentHashMap 的区别? 4、statement 和 preparedstatement 区别? 5、JSP 中一个 中取值与直接取值的区别?会有什么安全问题? 6、实现一个线程安全的单例模式 7、一个写 sql 语句的题目 8、自己实现一个 List,(主要实现 add等常用方法) 9、Spring 中 IOC 和 AOP 的理解? 10、两个对象的 hashcode 相同,是否对象相同?equal() 相同呢? 11、@RequestBody 和 @ResponseBody 区别? 12、JVM 一个错误,什么情况下会发生? 13、常用的 Linux 命令? 笔试时间为 半个小时 本文分享自微信公众号 - 笑笑笑技术圈(techxxx)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u/2925185/blog/4704722

渣渣二本的辛酸面试之路:从深圳外包到杭州蚂蚁金服,4年小Android的爬坑历程

这一生的挚爱 提交于 2021-02-04 10:00:56
写在开头 笔者16年于长沙一个普通二本,毕业后去了满地都是机会的深圳。第一份工作是一家外包公司,主要业务是电商和电子支付信息安全方面的。一年后跳槽到华润旗下一个子公司做金融。至今已工作4年。大家都知道,对于跟我一样没有名校背景,也没有大厂出身的程序员来说,面试唯一的加分项就只有某一方面的技术深度了。所以我也建议各位小伙伴也跟我一样,选择一个自己感兴趣的,或者比较自信的方向,不断的钻研深入。 众所周知,2020年的冬天非常煎熬,疫情肆虐,大批的互联网公司都在裁员甚至倒闭。年后的金三银四跳槽季竞争愈发激烈,岗位需求急剧减少,求职者一面难求,能找到心仪offer的人就更少了。所以我并没有在疫情的风波中着急去跳槽找工作,而是一边观望,一边收集面试素材和面试真题,沉淀自己,提高自己的核心竞争力。 在刚过去的金九银十跳槽季,国内疫情已基本 稳定,经济复苏后,面试压力也就不那么大了,我开始投简历。我投递简历的顺序是按小公司—>大公司的套路来的,深圳的小公司非常多,中大型公司比较少,因此,在这一个多月的面试历程中,我估算了一下,大概面了6家小公司,2家中型公司和1家大公司。一般我去面比较大的公司之前,我都会先面一两家小公司预热一下。 以下是面试中被问到的一些问题 基础: 1.描述一下Activity 生命周期? 2.A Activity 打开 B Activity 时都有哪些生命周期回调? 3

人人都是 API 设计者:我对 RESTful API、GraphQL、RPC API 的思考

浪尽此生 提交于 2021-02-04 04:29:06
梁桂钊 | 作者 有一段时间没怎么写文章了,今天提笔写一篇自己对 API 设计的思考。首先,为什么写这个话题呢?其一,我阅读了《阿里研究员谷朴:API 设计最佳实践的思考》一文后受益良多,前两天并转载了这篇文章也引发了广大读者的兴趣,我觉得我应该把我自己的思考整理成文与大家一起分享与碰撞。其二,我觉得我针对这个话题,可以半个小时之内搞定,争取在 1 点前关灯睡觉,哈哈。 现在,我们来一起探讨 API 的设计之道。我会抛出几个观点,欢迎探讨。 一、定义好的规范,已经成功了一大半 通常情况下,规范就是大家约定俗成的标准,如果大家都遵守这套标准,那么自然沟通成本大大降低。例如,大家都希望从阿里的规范上面学习,在自己的业务中也定义几个领域模型:VO、BO、DO、DTO。其中,DO(Data Object)与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。而 DTO(Data Transfer Object)是远程调用对象,它是 RPC 服务提供的领域模型。对于 BO(Business Object),它是业务逻辑层封装业务逻辑的对象,一般情况下,它是聚合了多个数据源的复合对象。那么,VO(View Object) 通常是请求处理层传输的对象,它通过 Spring 框架的转换后,往往是一个 JSON 对象。 事实上,阿里这种复杂的业务中如果不划分清楚 DO、BO、DTO、VO

适配器

久未见 提交于 2021-02-04 04:23:40
1、使用情况 (1)、系统需要使用现有的类,而此类的接口不符合系统需要 (2)、想建立一个重复使用的类,用于与一些将来引进的类一起工作。 2、适配器类图 目的:改变原接口以便与目标接口相容。(jdbc驱动) 适配器模式中的特例:缺省适配器模式 如果不准备实现一个接口中的所有方法可以模仿windowAdapter(java.awt)的做法制造一个抽象类给出所有方法的平庸实现。把一个类的接口变换成客户端希望的另一种接口。 核心:缺省适配类。1、是抽象类2、方法是具体方法,不应该是抽象方法。 来源: oschina 链接: https://my.oschina.net/u/729507/blog/75558

抽象工厂

不想你离开。 提交于 2021-02-03 11:44:02
1.1 定义 为创建一组相关或互相依赖的对象提供一个接口,并且无需指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。 1.2 角色 UML AbstractFactory :抽象工厂角色,它声明一组用于创建一种产品的方法,每一个方法对应一种产品,如上图中的 AbstractFactory 中就定义了两个方法,分别创建产品 A 和产品B。 ConcreteFactory : 具体工厂角色,它实现了在抽象工厂中定义的创建产品的方法,生成一组具体产品,这些产品构成了一个产品种类,每一个产品都位于某个产品等级结构中,如上述类图中的 ConcreteFactory1 、ConcreteFactory2。 AbstractProduct: 抽象产品角色,它为每种产品声明接口,比如上述类图中的 AbstractProduct A, AbstractProduct B。 ConcreteProduct: 具体产品角色,它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法,如上图的 ConcreteProductA1 , ConcreteProductA2 , ConcreteProductB1 ,ConcreteProductB2. 1.3 代码 public class Demo {

CentOS 用screen 在后台运行程序

百般思念 提交于 2021-02-03 07:27:10
我们常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。这时,我们可以用screen命令解决这个问题。 screen命令可以实现当前窗口与任务分离,我们即使离线了,服务器仍在后台运行任务。当我们重新登录服务器,可以读取窗口线程,重新连接任务窗口。 screen 的使用 安装 yum -y install screen 新建窗口 新建一个窗口有3种方法: ①直接执行screen指令 screen TIPS: 这样就可以新建窗口,进入到一个窗口中,但是这样窗口就没有名字了,无法区分他们。 ②带名称启动 screen -S name screen -S name TIPS: 这样新建一个名字为name的窗口,并进入到该窗口中。 例如: screen -S lorawan-server 这样就新建了一个名叫lorawan-server的窗口并进入。 ③带命令执行screen command screen command TIP: 这样新建一个窗口并在窗口中执行command命令,同样是没有名字。 例如 :screen lorawan-server 新建并执行 lorawan-server 了程序。 会话分离 我们在一个窗口运行某个程序之后

一应俱全,阿里新产P5到P8Java全栈成长宝典限时开源(2021最新)

本秂侑毒 提交于 2021-02-02 21:12:40
前言 对于大部分的程序员来说,清晰地规划自己的职业发展并不是一件容易的事情。作为一个曾经底子比较差,从底层摸爬滚打多年走过来的程序员,在这里分享一下对我帮助很大的一份宝典,希望同行们能快速掌握这些技术,直接弯道超车。 很多程序员不知道学什么?或者说不知道从何学习?今天分享的这份宝典由阿里大佬倾情力荐,Java全线成长宝典,从P5到P8一应俱全。 需要电子版来帮助自己从P5进阶到P8的朋友,点赞收藏,关注我之后直接添加小助理vx:bjmsb2020 即可百分百获取! P5:能够独立执行既定任务 1.打开程序员的大门 计算机基础+CPU/内存/硬盘+软、硬件关联+2进制、位运算 Windows基础+环境变量+PATH/CLASSPATH+常用命令 Linux基础+进程/文件命令+网络/安全命令/常用命令 虚拟机的安装与使用+VMWARE+Linux安装 2.JavaSE核心 面向对象和基本语法+封装+继承+多态+标识符合保留字+数据类型+流程控制 集合框架+COLLECTION+LIST+SET+MAP+COLLECTIONS+ARRAYS 多线程+线程进程+Tread、Runnable+线程的生命周期+线程池 IO框架+字节流+字符流+缓冲流+处理流+标准流+转换流 设计模式+工厂模式+单例模式+适配器模式+装饰器模式+代理模式+策略模式+模板方法模式+访问者模式 设计原则

Java多线程的同步机制(synchronized)

旧巷老猫 提交于 2021-02-02 15:48:16
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中 等待的某个线程就可以拿到锁执行同步代码了。这样就保证了同步代码在统一时刻只有一个线程在执行。 众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题。 关于线程的同步,一般有以下解决方法: 1. 在需要同步的方法的方法签名中加入synchronized关键字。 2. 使用synchronized块对需要进行同步的代码段进行同步。 3. 使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象。 另外,为了解决多个线程对同一变量进行访问时可能发生的安全性问题,我们不仅可以采用同步机制,更可以通过JDK 1.2中加入的ThreadLocal来保证更好的并发性。 本篇中,将详细的讨论Java多线程同步机制,并对ThreadLocal做出探讨。 本文大致的目录结构如下: 一、线程的先来后到——问题的提出:为什么要有多线程同步?Java多线程同步的机制是什么? 二

Java23种设计模式探究之(命令模式)

邮差的信 提交于 2021-02-02 12:43:31
预计阅读时间:6分钟 说在前面的话! 首先,我们对行为型模式下的命令模式的结构做一个简单的了解: 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。 行为型模式-命令模式(Command) 简介: 命令模式属于对象的行为型模式中的一种模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。 说白了,就是将一系列的请求命令封装起来,不直接调用真正执行者的方法,这样比较好扩展。 命令模式的结构示意图: 命令模式涉及到五个部分,它们分别是: Command(抽象命令类) :抽象出命令对象,可以根据不同的命令类型。写出不同的实现类。 ConcreteCommand(具体命令类) :实现了抽象命令对象的具体实现。 Invoker(调用者/请求者) : 请求的发送者,它通过命令对象来执行请求。 一个调用者并不需要在设计时确定其接收者

java23种设计模式

独自空忆成欢 提交于 2021-02-02 12:00:40
创建型 抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html 工厂方法 http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html 建造者模式 http://www.cnblogs.com/java-my-life/archive/2012/04/07/2433939.html 原型模式 http://www.cnblogs.com/java-my-life/archive/2012/04/11/2439387.html 单例模式 http://www.cnblogs.com/java-my-life/archive/2012/03/31/2425631.html 结构型 适配器模式 http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html 桥接模式 http://blog.csdn.net/jason0539/article/details/22568865 组合模式 http://blog.csdn.net/jason0539/article/details/22642281 外观模式 http://blog.csdn.net