粉丝投稿:五年开发经验,疫情期入职美团的全部经历

MySQL数据库:源码解析之Seata项目中的分布式ID生成算法 三、源码解析 首先,需要定义ID组合方式所需的常量,如每段占用位数等 /* 开始时间 (2020-05-03) */ private final long twepoch = 1607529600000L; /* 机器码所占的bit位数 = 10位 */ private final long workerIdBits = 10L; /* 最大支持的机器码 = 1023,该式子相当与~(-1L << 10L) */ private final long maxWorkerId = -1L ^ 阅读详情

前言

由于个人发展的原因和工作上的变动,产生了想出来看看机会的想法。经过了一段时间的准备,3月下旬开始出来面试,面到了 5月下旬,如愿拿到了自己心仪公司的 offer。按照自己的习惯,将这次面试过程中的一些经验总结、心得体会记录下来,自己留个记录,也希望可以帮助到一些同学。

个人情况

坐标北京,15 年本科毕业于普通一本,毕业后就职于一家传统电信公司

5 年经验应该具备哪些技能

首先,简单的聊一下我认为的 5 年经验左右、优秀的 Java 程序员应该具备的技能有哪些,按“专业技能”和“项目”两块,包括但不限于以下内容。

专业技能方面

  • 基础:JDK 常用类的原理、源码、使用场景。
  • 设计模式:常用几种的原理、使用场景,单例、动态代理、模板、责任链等。
  • 数据结构:数组、链表、栈、队列、树。
  • 网络:TCP、HTTP、HTTPS、负载均衡算法。
  • 框架:Spring IoC 原理、Spring AOP 原理和使用、Spring 常用的扩展点、MyBatis 的核心流程。
  • 中间件:常用中间件的核心原理与最佳实践,并对其中的 1 到 2 个有深入的学习,Redis、Kafka(RocketMQ、RabbitMQ)、Dubbo、Zookeeper。
  • 数据库(MySQL):索引原理、隔离级别、锁机制、分库分表、慢 SQL 定位及优化、线上问题解决。
  • Netty:NIO 原理、核心组件、I/O 多路复用(epoll)、零拷贝。
  • JVM:运行时数据区、垃圾回收算法、垃圾回收器(CMS、G1)、常用配置参数、线上问题定位及解决。
  • 稳定性保障:隔离、限流、熔断、降级等。
  • Linux:基本命令的使用、快速定位和排查问题。
  • 分布式理论:CAP、BASE、2PC、3PC、TCC。

项目方面

  • 能独立完成一个复杂模块的需求分析、方案设计和最终落地实现。
  • 能不断思考,寻找更优的设计和解决方案,积极优化慢 SQL、慢服务。
  • 具备排查问题的能力,遇到线上问题能及时定位和修复上线,例如:数据库死锁、服务器宕机、服务器 Full GC 频繁等。
  • 具备难题攻关的能力,能不断解决项目遇到的挑战,能给予初级工程师技术上的指导。
  • 初步具备带领团队(1-3人左右)的能力,能合理分配需求,做好进度把控、风险评估、Code Review。

严格来说,要完全做到上面这些有点难,我自己也并不具备,但是,我们可以将其视为目标,不断去努力。

面试常见形式

大厂面试通常是“连环炮”的形式,举个栗子:

面试官:用过哪些 Map

我:LinkedHashMap、ConcurrentHashMap、HashMap、TreeMap

面试官:这四种 Map 的区别

我:ConcurrentHashMap 线程安全,LinkedHashMap 可以记录插入顺序和访问顺序,TreeMap 可以自定义排序,除了这几个场景,其他场景基本都可以使用 HashMap

面试官:ConcurrentHashMap 怎么保证线程安全

我:JDK 1.8 以前通过分段锁,JDK 1.8 以后通过 CAS + Synchronized

面试官:ConcurrentHashMap 在 JDK 1.8 前后的锁有什么区别

我:JDK 1.8 以前锁分段,JDK 1.8 以后锁单个节点,锁粒度降低,并发度变高

这种模式的问法,其实就是想了解候选人对一个知识点的理解是仅仅停留在表面,还是真的去深入研究过。

面试内容

下面介绍下一些常见的面试内容,其中的面试题不一定是我真实遇到的,有可能是从别人的面试题中收集的,也有可能是我自己觉得重要的知识点,仅供参考。

我已经把这些面试内容整理成了一份pdf文档,还有Java的学习文档,需要的朋友可以三连本文,加小助理微信 mxj94670 即可领取!

1、项目

项目对于一个 3 - 5 年经验的开发来说是非常重要的,面试官也非常看重这一块。这个经验的开发基本是各大公司的编码主力,因此面试这个年限的候选人,通常项目是很重要的一块。面试官通常会让你先自己介绍下自己参与度最高(或者最牛逼)的项目,然后从中进行提问。常见的如以下:

  • 介绍下你参与度最高的项目
  • 画下项目的架构图
  • 如果核心流程处理到一半,服务器崩溃了,会怎么处理
  • 项目中遇到过哪些挑战或问题,怎么解决的
  • 项目的稳定性和可用性怎么保障
  • 数据安全这块怎么设计
  • 项目的技术选型,为什么选这些
  • ...

2、场景题

越到后面的面试官,越喜欢问场景题,场景题比较考验候选人平时的积累和解决问题能力。这个环节很容易挂掉一批人,特别是容易紧张的同学,很容易脑子会一片空白。场景题的核心一般是处理大数据量的问题、解决性能方面的问题。

场景题本质上是比较开放的,没有什么标准答案,只要自己的方案能够解决问题,能够“自圆其说”就行。

这个环节面试官可能会将线上真实的场景拿出来提问,我自己就遇到过。

3、专业技能

集合

  • 经常用到哪些 Map
  • 这几种 Map 的区别
  • CocurrentHashMap 怎么保证线程安全
  • CocurrentHashMap 在 JDK 1.8 前后的锁有什么区别
  • 聊下 HashMap 的原理
  • HashMap 在 Put 时,新链表节点是放在头部还是尾部
  • HashMap 扩容时的流程
  • HashMap 在 JDK 1.8 有什么改变
  • CocurrentHashMap 在 JDK 1.8 有什么改变
  • TreeMap 的原理
  • Map、List、Set 分别说下你知道的线程安全类和线程不安全的类

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

多线程、锁

  • 线程池使用的是哪种
  • 线程池参数怎么配置
  • 线程池各个参数的作用
  • 线程池的参数配置要注意什么
  • 线程池的工作流程
  • JDK 中的并发类知道哪些
  • AQS 的底层原理
  • 介绍下悲观锁和乐观锁
  • 使用过哪些锁
  • synchronized 和 Lock 的区别、使用场景
  • synchronized 原理
  • synchronized 作用于静态方法、普通方法、this、Lock.class 的区别
  • 为什么引入偏向锁、轻量级锁,介绍下升级流程
  • 死锁的必要条件,如何预防死锁
  • 介绍下 CountDownLatch 和 CyclicBarrier
  • 介绍下 CAS,存在什么问题
  • 介绍下 ThreadLocal,存在什么问题

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

我已经把这些面试内容整理成了一份pdf文档,还有Java的学习文档,需要的朋友可以三连本文,加小助理微信 mxj94670 即可领取!

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

网络

  • HTTPS 是怎么加密的
  • 普通 Hash 和一致性 Hash 原理
  • 一致性 Hash 的缺点
  • TCP 三次握手过程,为什么需要三次握手
  • 为什么 TIME_WAIT 状态需要经过 2MSL 才能返回到 CLOSE 状态
  • TCP 的拥塞控制
  • TCP 如何解决流控、乱序、丢包问题
  • 为什么会出现粘包和拆包,如何解决

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

Spring、Mybatis

  • Mybatis 中 # 和 $ 的区别
  • 怎么防止 SQL 注入
  • 使用 Mybatis 时,调用 DAO(Mapper)接口时是怎么调用到 SQL 的
  • 介绍下 Spring IoC 的流程
  • BeanFactory 和 FactoryBean 的区别
  • Spring 的 AOP 是怎么实现的
  • Spring 的事务传播行为有哪些,讲下嵌套事务
  • 什么情况下对象不能被代理
  • Spring 怎么解决循环依赖的问题
  • 要在 Spring IoC 容器构建完毕之后执行一些逻辑,怎么实现
  • @Resource 和 @Autowire 的区别
  • @Autowire 怎么使用名称来注入
  • bean 的 init-method 属性指定的方法里用到了其他 bean 实例,会有问题吗
  • @PostConstruct 修饰的方法里用到了其他 bean 实例,会有问题吗
  • Spring 中,有两个 id 相同的 bean,会报错吗,如果会报错,在哪个阶段报错
  • Spring 中,bean 的 class 属性指定了一个不存在的 class,会报错吗,如果会报错,在哪个阶段
  • Spring 中的常见扩展点有哪些

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

MySQL

  • MySQL 索引的数据结构
  • 为什么使用 B+ 树,与其他索引相比有什么优点
  • 各种索引之间的区别
  • B+ 树在进行范围查找时怎么处理
  • MySQL 索引叶子节点存放的是什么
  • 联合索引(复合索引)的底层实现
  • MySQL 如何锁住一行数据
  • SELECT 语句能加互斥锁吗
  • 多个事务同时对一行数据进行 SELECT FOR UPDATE 会阻塞还是异常
  • MySQL 使用的版本和执行引擎
  • MySQL 不同执行引擎的区别
  • MySQL 的事务隔离级别
  • MySQL 的可重复读是怎么实现的
  • MySQL 是否会出现幻读
  • MySQL 的 gap 锁
  • MySQL 的主从同步原理
  • 分库分表的实现方案
  • 分布式唯一 ID 方案
  • 如何优化慢查询
  • explain 中每个字段的意思
  • explain 中的 type 字段有哪些常见的值
  • explain 中你通常关注哪些字段,为什么

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

我已经把这些面试内容整理成了一份pdf文档,还有Java的学习文档,需要的朋友可以三连本文,加小助理微信 mxj94670 即可领取!

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

JVM

  • 运行时数据区
  • 服务器使用的什么垃圾收集器
  • CMS 垃圾收集的原理
  • G1 垃圾收集的特点,为什么低延迟
  • 有哪些垃圾回收算法,优缺点
  • 哪些对象可以作为 GC Roots
  • 有哪些类加载器
  • 双亲委派模式,哪些场景是打破双亲委派模式
  • 线上服务器出现频繁 Full GC,怎么排查
  • 定位问题常用哪些命令
  • 介绍下 JVM 调优的过程

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

Kafka

  • 为什么使用 Kafka
  • 介绍下 Kafka 的各个组件
  • 如何保证写入 Kafka 的数据不丢失
  • 如何保证从 Kafka 消费的数据不丢失
  • Kafka 为什么性能这么高
  • 零拷贝技术使用哪个方法实现
  • Java 中也有类似的零拷贝技术,是哪个方法
  • Kafka 怎么保证消息的顺序消费
  • Kafka 怎么避免重复消费
  • 什么是 HighWatermark 和 LEO
  • 什么是 ISR,为什么需要引入 ISR

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

Redis

  • 项目中使用的 Redis 版本
  • Redis 在项目中的使用场景
  • Redis 怎么保证高可用
  • Redis 的选举流程
  • Redis 和 Memcache 的区别
  • Redis 的集群模式
  • Redis 集群要增加分片,槽的迁移怎么保证无损
  • Redis 分布式锁的实现
  • Redis 删除过期键的策略
  • Redis 的内存淘汰策略
  • Redis 的 Hash 对象底层结构
  • Redis 中 Hash 对象的扩容流程
  • Redis 的 Hash 对象的扩容流程在数据量大的时候会有什么问题吗
  • Redis 的持久化机制有哪几种
  • RDB 和 AOF 的实现原理、优缺点
  • AOF 重写的过程
  • 哨兵模式的原理
  • 使用缓存时,先操作数据库还是先操作缓存
  • 为什么是让缓存失效,而不是更新缓存
  • 缓存穿透、缓存击穿、缓存雪崩
  • 更新缓存的几种设计模式

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

Zookeeper

  • Zookeeper 的使用场景
  • Zookeeper 怎么实现分布式锁
  • Zookeeper 怎么保证数据的一致性
  • ZAB 协议的原理
  • Zookeeper 遵循 CAP 中的哪些
  • Zookeeper 和 Eureka 的区别
  • Zookeeper 的 Leader 选举
  • Observer 的作用
  • Leader 发送了 commit 消息,但是所有的 follower 都没有收到这条消息,Leader 就挂了,后续会怎么处理

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

分布式

  • CAP 理论
  • BASE 理论
  • 分布式事务 2PC 和 TCC 的原理
  • TCC 在 cancel 阶段如果出现失败怎么处理
  • Paxos 算法、Raft 算法

4、Hr 面

如果你一路过五关斩六将,最终来到了 Hr 面,那么恭喜你,你已经离 offer 非常非常近了。可以开始畅想自己升职加薪,当上总经理,出任 CEO,迎娶白富美,走上人生巅峰的场景了。

Hr 面主要是了解候选人的一些通用素质,经常会问的问题如下:

  • 介绍下自己投入最多的项目(当时我就惊了,Hr 也开始问项目了 )
  • 离职的原因
  • 当前的薪资、绩效
  • 当前在面试的其他公司的情况
  • 平时有没有学习的习惯,怎么学习的,现在在学习什么
  • 未来的规划

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

 

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

资料领取方式:三连后扫描下方即可免费获取!

 

【微服务38】分布式事务Seata源码解析六:全局/分支事务分布式ID如何生成?序列号超了怎么办?时钟回拨问题如何处理? 源码解析Seata使用雪花算法生成分布式ID、全局事务ID、分支事务ID;当某一个毫秒内的序列号用尽时如何处理?时钟回拨问题如何处理?UUIDGenerator解析、IdWorker解析 阅读详情

相关推荐

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-8 计算两个数的和

第9行代码绑定oninput事件,用来将计算的结果绑定到< input >标签;第10、12行代码定义id值分别为a和b的数字输入框。< output >标签用于定义不同类型的输出。更改输入框中的数字,结果也将发生改变。

m0_73657966的博客 649

离职美团,面试了阿里、百度多家互联网公司,熬夜为大家肝出这些

前言 由于个人发展的原因和工作上的变动,产生了想出来看看机会的想法。经过了一段时间的准备,3月下旬开始出来面试,面到了 5月下旬,如愿拿到了自己心仪公司的 offer。按照自己的习惯,将这次面试过程中的一些经验总结、心得体会记录下来,自己留个记录,也希望可以帮助到一些同学。 个人情况 坐标北京,15 年本科毕业于普通一本,毕业后就职于一家传统电信公司,17 年后就职于美团点评。 4 年经验应该具备哪些技能 首先,简单的聊一下我认为的 4 年经验左右、优秀的 Java 程序员应该具备的技能有哪些,按

如果频繁就私信一下呢 1130

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 第1章 HTML5+CSS3初体验 课后练习

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 第1章 HTML5+CSS3初体验 课后练习

【spring】面试必问

参考: [《面试必问的 Spring,你懂了吗?》](https://blog.youkuaiyun.com/v123411739/article/details/110009966)

m0_45406092的博客 636

响应式Web开发项目教程(HTML5+CSS3+Bootstrap).zip

响应式框架bootstrap框架教程,包括源码,课件,课后习题

运算放大器电路仿真实践:从零实现完整示例

通过一个完整的运算放大器电路仿真示例,深入掌握电路仿真的关键步骤与技巧,帮助电子爱好者和工程师快速上手实际项目设计。

weixin_34725745的博客 1319

html响应式网页设计题库,响应式web开发项目教程试题题目及答案,课程2020最新期末考试题库,章节测验答案...

响应式web开发项目教程试题题目及答案,课程2020最新期末考试题库,章节测验答案更多相关问题当用管道输送气体碳氢化合物时,必须保持其温度在露点以上。()一般情况下,有空调的房间不计算门窗缝隙渗入室内的冷空气耗热量。()调查农村164名育龄妇女生育情况如下:生育胎次为0、1、2、3、4,相对应的生育脉次的妇女人数为9、29、74、调查农村164名育龄妇女生育情况如下:生育胎次为0、1、2、3、4,...

weixin_39594103的博客 1459

大话西游2单机版V8一键架设教程:从下载到GM权限全流程(附仙玉修改技巧)

本文详细讲解了大话西游2单机版V8的一键架设全流程,包括环境准备、服务端配置、客户端安装及GM权限获取等关键步骤。特别提供了仙玉修改技巧和高级资源管理方法,帮助玩家快速搭建个性化游戏环境并掌握核心控制功能。教程涵盖Windows系统兼容性设置、常见问题解决方案以及数据备份策略,适合各类怀旧玩家和技术爱好者。

weixin_29254673的博客 1038

Java -- 每日一问:谈谈 Spring Bean 的生命周期和作用域?

每日一问:谈谈 Spring Bean 的生命周期和作用域?

Kevin Learn Android 339

手把手教您解决 AdGuard Home DNS重写功能失效的问题

AdGuard Home 设置了 DNS 重写,规则明明没问题,客户端却死活解析不到内网 IP?🤯 别急着重装!🚫 本文手把手教你如何解决软路由 DNS 解析“玄学”故障!🛠️🚀

XiaoqiangClub的博客 920

Grafana 可视化配置

Grafana 可视化操作使用

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 1940

绝了!javaweb编程技术第二版答案

专题5:Java序列化 1、什么是java序列化,如何实现java序列化? 2、保存(持久化)对象及其状态到内存或者磁盘 3、序列化对象以字节数组保持-静态成员不保存 4、序列化用户远程对象传输 5、Serializable 实现序列化 6、writeObject 和 readObject 自定义序列化策略 7、序列化 ID 8、序列化并不保存静态变量 9、Transient 关键字阻止该变量被序列化到文件中 10、序列化(深 clone 一中实现) 专题6:J

m0_58591044的博客 1689

FPGA 学习笔记:Vivado 配置IO引脚约束

FPGA 学习笔记:Vivado 配置IO引脚约束

坚韧与专注 2万+

快来快来!又来更新了,Java基础(五)方法。

本贴为持续更新贴!内容附带大量图文和练习,供大家学习时参考。本贴主要内容为方法及更多知识,希望大家阅读后能有不少的了解。更多资料请练习: 码牛云课堂Java技术指导霸牛老师(微信):mnykt8080; ​ 码牛云Java技术交流QQ群:1142264605; 1.方法概述 1.1 方法的概念 方法:具有特定逻辑的一段代码。 作用:提高代码的复用性。 2. 方法的定义和调用 2.1 无参数方法定义和调用 定义格式: public static void 方法名 ( ) { // 方法体; } 调用格

mnyketang02的博客 319

(2)NPW(监控片)【中】---业务场景精讲

自己在日常工作当中,由于非产线人员出生,对NPW的知识一直一知半解,业务场景认识的不够透彻,做系统的时候很难理解甲方的NPW业务应用,特收集了不少关于NPW的一些业务场景,下面都是一些摘抄,大家关注我标红标粗的部分,

阿拉伯梳子的专栏 1588

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

源码解析之Seata项目中的分布式ID生成算法

????????关注后回复“进群”,拉你进程序员交流群????????作者丨Coder的技术之路来源丨Coder的技术之路内容摘要:一、知识点背景二、算法原理三...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 657

解锁RK1126与SC132GS摄像头适配密码:技术与代码全解析

本文详细介绍了瑞芯微RK1126芯片与SC132GS摄像头的适配方法。首先分析了RK1126的四核Cortex-A7处理器、Mali-T860 GPU等硬件特性,以及SC132GS的130万像素、全局快门等技术参数。重点阐述了基于MIPI CSI接口的硬件连接原理和基于V4L2框架的软件驱动设计,并提供了完整的初始化、数据采集和图像处理代码实现。针对常见连接和图像质量问题给出了解决方案,展现了该组合在智能安防、工业检测等领域的应用潜力,为开发者提供了实用的技术参考。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1503

Spring中bean属性init-method与transaction 注意事项

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34123613的博客 361

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java面试之Spring

Spring面试题 1.循环依赖的问题怎么解决?必须三级缓存吗? 参考:Spring 循环依赖 2.bean对象的生命周期? 3.IOC是啥?解释下流程?DI呢? 4.AOP的原理? 5.Spring框架的优势? ​ 1、Spring通过DI、AOP和消除样板式代码来简化企业级Java开发 ​ 2、Spring框架之外还存在一个构建在核心框架之上的庞大生态圈,它将Spring扩展到不同的领域,如Web服务、REST、移动开发以及NoSQL ​ 3、低侵入式设计,代码的污染极低 ​ 4、独立于各种应用服

早起的虫子jj 557

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

GitHub重磅官宣!我总结了所有面试题,快来收藏!

前言 Netty 是一款基于 Java 的网络编程框架,能为应用程序管理复杂的网络编程、多线程处理以及并发。Netty 隐藏了样板和底层代码,让业务逻辑保持分离,更加易于复用。使用 Netty 可以得到一个易于使用的 API,让开发人员可以专注自己的应用程序的独特之处。介绍了 Netty 框架,并展示了如何将它引入到 Java 网络应 用程序中通过对本书的学习,读者能学到如何编写高度可伸缩的应用程序而无需关心底层 API。本书将通过许多动手的例子教读者以异步的方式进行思考,并帮助读者掌握构建大规模网络应用程

m0_56051002的博客 686

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

分布式事务

来自itheima

dark159735的博客 2万+

Java工作经验6年,复盘一个月再战拿下P7offer,成功拿下大厂offer

说明 Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在分布式事务的问题。 业界有很多的解决方案,对此我相信大家都百度一下子就有很多,但是我巨人大哥想说的是:微服务架构中应当尽量避免分布式事务。 下面就是来讨论下,分布式事务中主要聚焦于强一致性和最终一致性的解决方案。 volatile相关经典面试题 谈谈volatile的特性 volatile的内存语义 说说并发编程的3大特性 什么是内存可见性,什么是指令重排序? volatile是如何

m0_56067448的博客 323

【JavaSE】12-枚举类与注解

十二、 枚举类与注解 12.1 枚举类的使用 其实就是项目三当中的员工状态,如FREE、BUSY、VACATION等状态类的对象。总的来说,当一个类只有有限个数的常量对象时,如季节、星期、性别、订单状态等,我们就优先考虑使用枚举类。 如果枚举类中只有一个对象,可以作为单例模式的实现方式。 12.1.1 自定义枚举类 JDK 5.0 之前自定义枚举类。 1.使用步骤 ① 声明枚举类对象的属性:private final; ② 私有化枚举类的构造器; ③ 提供枚举对象; ④ 提供get()属性的方法; ⑤ 重

Sihang_Xie的博客 592

Java笔试题(题目附加答案及解析)

此文章记录小编在招聘过程中遇到的笔试题记录,希望此文章对许多和小编一样参加笔试的人提供帮助。同时此文章是小编整理,如有错误欢迎评论指出。谢谢。 :目录方便大家观看题目 单选题 以下哪个不是SpringBoot默认支持自动装配的?(A) A.spring-boot-starter-web B spring-boot-starter-data-redis C spring-boot-starter-security D mybatis spring-boot-starter Spr

weixin_47514459的博客 4287
上一篇: 每一个程序员都要练就十八般武艺,而掌握数据结构与算法就像修炼了九阳神功
下一篇: 《秋招过后,字节跳动年末再招万人》,不知道你是不是已经安于现状,还是蓄势待发呢?
Java斗帝之路
博客等级 码龄7年 2392粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值