Java经典面试题

40道Java经典面试题总结 Synchronized 的并发策略是悲观的,不管是否产生竞争,任何数据的操作都必须加锁。乐观锁的核心是 CAS,CAS 包括内存值、预期值、新值,只有当内存值等于预期值时,才会将内存值修改为新值。(1)锁消除所消除就是虚拟机根据一个对象是否真正存在同步情况,若不存在同步情况,则对该对象的访问无需经过加锁解锁的操作。比如 StringBuffer 的 append 方法,因为 append 方法需要判断对象是否被占用,而如果代码不存在锁竞争,那么这部分的性能消耗是无意义的。 阅读详情
1、如果main方法被声明为private会怎样?
能正常编译,但运行的时候会提示”main方法不是public的”。

2、Java里的传引用和传值的区别是什么?
传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。

3、如果要重写一个对象的equals方法,还要考虑什么?
hashCode。

4、Java的”一次编写,处处运行”是如何实现的?
Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。

5、说明一下public static void main(String args[])这段声明里每个关键字的作用。
public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。所以可见性设置为pulic.
static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。
void: main方法没有返回值。
String是命令行传进参数的类型,args是指命令行传进的字符串数组。

6、==与equals的区别
==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方。
==比较的是引用而equals方法比较的是内容。public boolean equals(Object obj) 这个方法是由Object对象提供的,可以由子类进行重写。默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。String, BitSet, Date, 和File都对equals方法进行了重写,对两个String对象 而言,值相等意味着它们包含同样的字符序列。对于基本类型的包装类来说,值相等意味着对应的基本类型的值一样。

7、如果去掉了main方法的static修饰符会怎样?
程序能正常编译。运行时会抛NoSuchMethodError异常。

8、为什么oracle type4驱动被称作瘦驱动?
oracle提供了一个type 4 JDBC驱动,被称为瘦驱动。这个驱动包含了一个oracle自己完全用Java实现的一个TCP/IP的Net8的实现,因此它是平台独立的,可以在运行时由浏览器下载,不依赖任何客户端 的oracle实现。客户端连接字符串用的是TCP/IP的地址端口,而不是数据库名的tnsname。

9、介绍一下finalize方法
final: 常量声明。 finally: 处理异常。 finalize: 帮助进行垃圾回收。
接口里声明的变量默认是final的。final类无法继承,也就是没有子类。这么做是出于基础类型的安全考虑,比如String和Integer。这样也使得编译器进行一些优化,更容易保证线程的安全性。final方法无法重写。final变量的值不能改变。finalize()方法在一个对象被销毁和回收前会被调用。finally,通常用于异常处理,不管有没有异常被抛出都会执行到。比如,关闭连接通常放到finally块中完成。

10、什么是Java API?
Java API是大量软件组件的集合,它们提供了大量有用的功能,比如GUI组件。

11、GregorianCalendar类是什么东西?
GregorianCalendar提供了西方传统日历的支持。

12、ResourceBundle类是什么?
ResourceBundle用来存储指定语言环境的资源,应用程序可以根据运行时的语言环境来加载这些资源,从而提供不同语言的展示。

13、为什么Java里没有全局变量?
全局变量是全局可见的,Java不支持全局可见的变量,因为:全局变量破坏了引用透明性原则。全局变量导致了命名空间的冲突。

14、如何将String类型转化成Number类型?
Integer类的valueOf方法可以将String转成Number。

15、SimpleTimeZone类是什么?
SimpleTimeZone提供公历日期支持。

16、while循环和do循环有什么不同?
while结构在循环的开始判断下一个迭代是否应该继续。do/while结构在循环的结尾来判断是否将继续下一轮迭代。do结构至少会执行一次循环体。

17、Locale类是什么?
Locale类用来根据语言环境来动态调整程序的输出。

18、面向对象编程的原则是什么?
主要有三点,多态,继承和封装。

19、介绍下继承的原则
继承使得一个对象可以获取另一个对象的属性。使用继承可以让已经测试完备的功能得以复用,并且可以一次修改,所有继承的地方都同时生效。

20、什么是隐式的类型转化?
隐式的类型转化就是简单的一个类型赋值给另一个类型,没有显式的告诉编译器发生了转化。并不是所有的类型都支持隐式的类型转化。

21、sizeof是Java的关键字吗?
不是。

22、native方法是什么?
native方法是非Java代码实现的方法。

23、在System.out.println()里面,System, out, println分别是什么?
System是系统提供的预定义的final类,out是一个PrintStream对象,println是out对象里面一个重载的方法。

24、封装,继承和多态是什么?
简单来说,多态是指一个名字多种实现。多态使得一个实体通过一个通用的方式来实现不同的操作。具体的操作是由实际的实现来决定的。
多态在Java里有三种表现方式:方法重载通过继承实现方法重写通过Java接口进行方法重写。

25、显式的类型转化是什么?
显式的类型转化是明确告诉了编译器来进行对象的转化。

26、什么是Java虚拟机?
Java虚拟机是能移植到不同硬件平台上的软件系统。

27、类型向下转换是什么?
向下转换是指由一个通用类型转换成一个具体的类型,在继承结构上向下进行。

28、Java的访问修饰符是什么?
访问权限修饰符是表明类成员的访问权限类型的关键字。使用这些关键字来限定程序的方法或者变量的访问权限。它们包含:
public: 所有类都可以访问 protected: 同一个包内以及所有子类都可以访问 private: 只有归属的类才能访问默认: 归属类及相同包下的子类可以访问。

29、所有类的父类是什么?
Object.

30、Java的基本类型有哪些?
byte,char, short, int, long, float, double, boolean。
31、静态类型有什么特点?
静态变量是和类绑定到一起的,而不是类的实例对象。每一个实例对象都共享同样一份静态变量。也就是说,一个类的静态变量只有一份,不管它有多少个对象。类变量或者说静态变量是通过static这个关键字来声明的。类变量通常被用作常量。静态变量通常通过类名字来进行访问。当程序运行的时候这个变量就会创建直到程序结束后才会被销毁。类变量的作用域和实例变量是一样的。它的初始值和成员变量也是一样的,当变量没被初始化的时候根据它的数据类型,会有一个默认值。类似的,静态方法是属于类的方法,而不是类对象,它的调用并不作用于类对象,也不需要创建任何的类实例。静态方法本身就是final的,因为重写只会发生在类实例上,静态方法是和类绑定在一起的,不是对象。父类的静态方法会被子类的静态方法屏蔽,只要原来方法没有声明为final。非静态方法不能重写静态方法,也就是说,你不能在子类中把一个静态方法改成实例方法。
非静态变量在每一个对象实例上都有单独的一份值。

32、&操作符和&&操作符有什么区别?
当一个&表达式在求值的时候,两个操作数都会被求值,&&更像是一个操作符的快捷方式。当一个&&表达式求值的时候,先计算第一个操作数,如果它返回true才会计算第二个操作数。如果第一个操作数取值为fale,第二个操作数就不会被求值。

33、Java是如何处理整型的溢出和下溢的?
Java根据类型的大小,将计算结果中的对应低阶字节存储到对应的值里面。

34、public static void写成static public void会怎样?
程序正常编译及运行。

35、声明变量和定义变量有什么不同?
声明变量我们只提供变量的类型和名字,并没有进行初始化。定义包括声明和初始化两个阶段String s;只是变量声明,String s = new String(“bob”); 或者String s = “bob”;是变量定义。

36、Java支持哪种参数传递类型?
Java参数都是进行传值。对于对象而言,传递的值是对象的引用,也就是说原始引用和参数引用的那个拷贝,都是指向同一个对象。

37、对象封装的原则是什么?
封装是将数据及操作数据的代码绑定到一个独立的单元。这样保障了数据的安全,防止外部代码的错误使用。对象允许程序和数据进行封装,以减少潜在的干涉。对封装的另一个理解是作为数据及代码的保护层,防止保护层外代码的随意访问。

38、你怎么理解变量?
变量是一块命名的内存区域,以便程序进行访问。变量用来存储数据,随着程序的执行,存储的数据也可能跟着改变。

39、数值提升是什么?
数值提升是指数据从一个较小的数据类型转换成为一个更大的数据类型,以便进行整型或者浮点型运算。在数值提升的过程中,byte,char,short值会被转化成int类型。需要的时候int类型也可能被提升成long。long和float则有可能会被转换成double类型。

40、Java的类型转化是什么?
从一个数据类型转换成另一个数据类型叫做类型转换。Java有两种类型转换的方式,一个是显式的类型转换,一个是隐式的。

41、什么是Java虚拟机?
Java虚拟机是能移植到不同硬件平台上的软件系统。

42、类型向下转换是什么?
向下转换是指由一个通用类型转换成一个具体的类型,在继承结构上向下进行。

43、Java的访问修饰符是什么?
访问权限修饰符是表明类成员的访问权限类型的关键字。使用这些关键字来限定程序的方法或者变量的访问权限。它们包含:
public: 所有类都可以访问 protected: 同一个包内以及所有子类都可以访问 private: 只有归属的类才能访问默认: 归属类及相同包下的子类可以访问。

44、所有类的父类是什么?
Object

45、Java的基本类型有哪些?
byte,char, short, int, long, float, double, boolean。

46、main方法的参数里面,字符串数组的第一个参数是什么?
数组是空的,没有任何元素。不像C或者C++,第一个元素默认是程序名。如果命令行没有提供任何参数的话,main方法中的String数组为空,但不是null。

47、怎么判断数组是null还是为空?
输出array.length的值,如果是0,说明数组为空。如果是null的话,会抛出空指针异常。

48、程序中可以允许多个类同时拥有都有main方法吗?
可以。当程序运行的时候,我们会指定运行的类名。JVM只会在你指定的类中查找main方法。因此多个类拥有main方法并不存在命名冲突的问题。

49、静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?
当类加载器将类加载到JVM中的时候就会创建静态变量,这跟对象是否创建无关。静态变量加载的时候就会分配内存空间。静态代码块的代码只会在类第一次初始化的时候执行一次。一个类可以有多个静态代码块,它并不是类的成员,也没有返回值,并且不能直接调用。静态代码块不能包含this或者super,它们通常被用初始化静态变量。

50、一个类能拥有多个main方法吗?
可以,但只能有一个main方法拥有以下签名:
public static void main(String[ ]  args)  { }
否则程序将无法通过编译。编译器会警告你main方法已经存在。

51、简单的介绍下JVM是如何工作的?
JVM是一台抽象的计算机,就像真实的计算机那样,它们会先将.java文件编译成.class文件(.class文件就是字节码文件),然后用它的解释器来加载字节码。

52、如果原地交换两个变量的值?
先把两个值相加赋值给第一个变量,然后用得到的结果减去第二个变量,赋值给第二个变量。再用第一个变量减去第二个变量,同时赋值给第一个变量。代码如下:
int a=5,b=10;a=a+b;  b=a-b;  a=a-b;
使用异或操作也可以交换。第一个方法还可能会引起溢出。异或的方法如下: int a=5,b=10;a=a+b; b=a-b; a=a-b;
int a = 5; int b = 10;
a = a ∧ b
b = a ∧ b
a = a ∧ b

53、什么是数据的封装?
数据封装的一种方式是在类中创建set和get方法来访问对象的数据变量。一般来说变量是private的,而get和set方法是public的。封装还可以用来在存储数据时进行数据验证,或者对数据进行计算,或者用作自省(比如在struts中使用javabean)。把数据和功能封装到一个独立的结构中称为数据封装。封装其实就是把数据和关联的操作方法封装到一个独立的单元中,这样使用关联的这些方法才能对数据进行访问操作。封装提供的是数据安全性,它其实就是一种隐藏数据的方式。

54、什么是反射API?它是如何实现的?
反射是指在运行时能查看一个类的状态及特征,并能进行动态管理的功能。这些功能是通过一些内建类的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以获取到类名。

55、JVM自身会维护缓存吗,是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理的堆?为什么?
是的,JVM自身会管理缓存,它在堆中创建对象,然后在栈中引用这些对象。

56、虚拟内存是什么?
虚拟内存又叫延伸内存,实际上并不存在真实的物理内存。

57、方法可以同时即是static又是synchronized的吗?
可以。如果这样做的话,JVM会获取和这个对象关联的java.lang.Class实例上的锁。这样做等于:
synchronized(XYZ.class)  {
}

58、String和StringTokenizer的区别是什么?
StringTokenizer是一个用来分割字符串的工具类。
StringTokenizer st = new StringTokenizer("Hello World");
while (st.hasMoreTokens( ) )  {
      System.out.println (st.nextToken ( ) );
}
输出:
Hello
World

59、transient变量有什么特点?
transient变量不会进行序列化。例如一个实现Serializable接口的类在序列化到ObjectStream的时候,transient类型的变量不会被写入流中,同时,反序列化回来的时候,对应变量的值为null。

60、哪些容器使用Border布局作为它们的默认布局?
Window, Frame, Dialog。

61、怎么理解什么是同步?
同步用来控制共享资源在多个线程间的访问,以保证同一时间内只有一个线程能访问到这个资源。在非同步保护的多线程程序里面,一个线程正在修改一个共享变量的时候,可能有另一个线程也在使用或者更新它的值。同步避免了脏数据的产生。
对方法进行同步:
public synchronized viod Method1  ( )  {
//  Appropriate method-related code.
}
在方法内部对代码块进行同步:
public myFunction ( ) {
       synchronized (this)  {
               // Synchronized code here.
          }
}
Java常问面试题整理,帮你搞定‘金9银10’(附答案纯干货) 前言: 工作做螺丝钉,面试造火箭,我想这个是每个程序员比较头疼的事情,但是又有必须经历的流程,尤其是摸不清面试官问的问题,准备不充分,导致面试的时候不知道如何回答。本文是小编个人从几十次面试中挑选的面试几率比较大的一些题,保证都是大家被问过的(就是这么自信),希望对大家找工作有所帮助。 由于时间关系答案我就不写了(主要是懒),都总结成笔记了,需要答案的可以点击下方加群领取。另外本人整理收藏了20年多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,下方只是部分截图 想要资料的话也可以点 阅读详情

相关推荐

VirtualBox虚拟机拖放文件总失败?手把手教你配置双向拖放与共享文件夹(Ubuntu版)

本文详细指导如何在VirtualBox的Ubuntu虚拟机中配置高效的数据交换方案。核心是安装VirtualBox Guest Additions,并在此基础上开启双向拖放与共享粘贴板功能,同时建立稳定的共享文件夹,彻底解决主机与虚拟机间文件传输失败的问题,构建无缝的跨系统工作环境。

weixin_29245767的博客 232

java基础面试题2

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

weixin_34329187的博客 300

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1067

javascript之高级数组API

js数组API的简单练习

liu659_的博客 1236

Carla-编译CarlaUE4提示HoloLens.Automation项目缺少Windows程序集?

编译CarlaUE4提示HoloLens.Automation项目缺少Windows程序集?不妨看看这个!

DSK_981029的博客 2573

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释

书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata)

qq_42090739的博客 1万+

用脚本截取字符串

用脚本截取字符串

kuangfeng的博客 608

nRF开发环境搭建全攻略:VS Code + nRF Connect SDK + Zephyr实战

嵌入式开发中,环境配置往往是新手入门的第一道障碍,尤其面对基于Zephyr RTOS的Nordic nRF平台时,工具链的复杂度常让人望而却步。理解构建系统、SDK版本管理和调试工具之间的协作关系,是高效开发的前提。Zephyr作为开源实时操作系统,通过设备树和Kconfig实现硬件描述与功能配置,而nRF Connect SDK(NCS)则是Nordic基于Zephyr的增强发行版,两者结合为物联网开发提供了强大支持。基于VS Code搭建开发环境,配合west工具管理多仓库、CMake/Ninja执行构

weixin_29188997的博客 227

WEB(白)字符串转数组五种方法

// 第一种 split('') var str = '123、???' var arr = str.split('') console.log(arr); console.log(typeof arr);//Object console.log(str); console.log(typeof str);//string //第二拓展运算符 ...

fttttttt的博客 618

CY7C68013 C0模式启动

C0或是C2启动的目的,是更改USB芯片的ID信息,并把固件载入到芯片内部RAM中运行。C0模式是指只从EEPROM中载入USB ID信息,因为只有ID信息(8个字节),所以只需要一个小容量的EEPROM即可。当然大容量的EEPROM也可以使用C0模式,但是小容量的EEPROM只能使用C0模式启动。如下图所示: 使用小容量的EEPROM要将A0,A1,A2接地。 这里我用了个24LC01,容量1

Fezl的博客 1740

FAST-LIVO2 源码精读(十八):实时性优化、漂移排查与工程落地

FAST-LIVO2 的工程价值,不在于某一个孤立的技巧,而在于它把"激光的几何精度、惯性的高频预测、视觉的纹理与色彩"用一套简洁的滤波框架紧紧拧在一起,又在实时性、鲁棒性、可扩展性之间取得了难得的平衡。先用内建计时表定位瓶颈,再按降采样、并行、滑窗、编译优化、双频输出逐项加速;遇到漂移先看现象、循诊断树定位根因、回到对应章节取解法。十八篇至此收束。

PX4-SLAM-PNC 218

json字符串转json数组

1.前提是需要引入com.alibaba.fastjson相关jar包。 2.List dataList = JSON.parseArray(str).toJavaList(String.class);即可转换成字符串类型的数组

lifulong666的博客 1022

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

一道java经典面试题

一道java 经典面试题 ,有知道的朋友 告诉我 radius为什么是0

极客蓝天 868

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

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

初级Java经典面试题汇总

## 初级Java经典面试题汇总 ### Java基础 1. Java中的基本数据类型有哪些? - byte, short, int, long, float, double, char, boolean。 2. String、StringBuilder和StringBuffer的区别是什么? - String是不可变的,StringBuilder和StringBuffer是可变的。 - StringBuilder是非线程安全的,StringBuffer是线程安全的。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 3113

深度学习工具包 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")

Java 面试题 经典

请下载见附件~~~

不疯的疯子 144

Magic-API数据库更新操作汇总

Magic-API数据库更新操作集合

小菜 1114

让人上瘾的新一代开发神器——Magic-API

Magic-API是一个基于 Java语言,依托于Spring Boot 生态的一个快速开发框架。用完真的会感叹:真香。

kj863257的专栏 3万+

字符串转换为数组的4 个方法

大家好,我是漫步,分享几个简单地将字符串转为数组的方法。英文|https://javascript.plainenglish.io/4-ways-of-transforming-a-s...

前端开发博客 37万+

(JAVA):字符串的分割操作------String类常见的API。

目录 前言: 1、split() 方法 2、熟悉特殊循环的使用(如上:for(String s : strs){}) 3、substring() 方法 前言: 不受情绪的摆布 不受自己情绪的摆布,这是一种良好的品质,它能够使你不被那些庸俗、转瞬即逝的印象所左右。没有哪一种胜利比驾驭自身冲动的情绪更值得让人敬佩,因为这是意志上的胜利。即便是冲动的情绪影响到你自身,也不要让它威胁到你的地位,尤其是...

yzh2776680982的博客 2136

获取url里面的值----字符串分割

function getPathNmaeValue(url,name) { var index = url.indexOf("?"); var keyStr = url.substring(index+1); var keyArr = keyStr.split("&amp;"); for (var i=0; i &lt;keyArr.length;i++) { ...

MagicWing的博客 1002

10万字208道Java经典面试题总结(附答案)

1、JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。 2、== 和 equals 的区别是什么? 对于基本类型,==比较的是值; 对于引用类型,==比较的是地址; equals不能用于基本类型的比较; 如果没有重写equa

学Java,找哪吒 106万+

阿里最新Java面试题,摘选最具代表性49题,看了答案也不过如此

本文转载自:阿里最新Java面试题,摘选最具代表性49题,看了答案也不过如此 不想当将军的士兵不是好士兵,不想成为架构师的Java程序员不是好程序员!为什么要成为架构师,为什么要进大厂? 那年十八 母校舞会 站着如喽啰 那时候 我含泪 发誓各位 必须看到我 1. 面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括...

Java_supermanNO1的博客 6219

115个Java面试题和答案——终极列表

本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,第二篇主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。 开始! 目录 面向对象编

期待 5215
上一篇: Redis总结
下一篇: 正则表达式总结
magic晴天
博客等级 码龄10年 9粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值