1、字节流的处理方式
字节流处理的是计算机最基本的单位byte,它可以处理任何数据格式的数据。主要的操作对象就是byte数组,通过read()和write()方法把byte数组中的数据写入或读出。
2、字符流的处理方式
字符流是由字节流包装而来,它的输入和输出流类型包括StringReader和StringWriter、BufferedReader和BufferedWriter。字符流API的基本使用思路有以下步骤:
(1)获取输入或输出流对象。可以从File得到,也可以从网络或其他地方得到。
(2)根据特定的字符格式创建InputStreanReader或InputStreamWriter对象。
(3)使用read()或readLine()方法,得到数据。或使用write()或print()方法进行字符输出。
(4)最后关闭reader或writer。
3、什么是序列化?
序列化本质上就是把对象内存中的数据按照一定的规则,变成一系列的字节数据,然后再把这些字节数据写入到流中。而反序列化的过程相反,限度去字节数据,然后再重新组装成Java对象。
所有需要进行序列化的类,都必须实现Serializeable接口,必要时还需要提供静态的常量serialVersionUID。
4、如何序列化和反序列化一个Java对象?
对于对象的输出和输入,Java的I/O体系中主要提供了ObjectOutputStream和ObjectInputStream两个类以供开发者使用,它们的基本使用思路有以下步骤。
(1)让需要序列化的类实现java.io.Serializable接口;
(2)提供静态的long型的常量serialVersionUID;
(3)如果是序列化对象,则用一个输出流创建一个ObjectOutputStream对象,然后调用writeObject()方法;
(4)如果是反序列化,首先使用一个输入流创建一个ObjectInputStream对象。然后调用readObject(0方法,得到Object类型的对象。最后再做类型的强制转换;
(5)最后关闭流。
5、什么是多线程?
线程是进程中的一个执行单元,又称为轻量级进程,它和进程一样拥有独立的执行控制,而操作系统负责调度;
而多线程是这样一种机制:它允许在程序中并发执行多个指令流,每个指令流都称为一个线程。多线程机制下的线程彼此间互相独立,比较容易共享数据,通过并发执行的方式来提高程序的效率和性能。
6、解释进程和线程的区别
进程和线程的区别主要包括:
(1)线程的划分尺度小于进程,线程隶属于某个进程;
(2)进程是程序的一种动态形式,是CPU、内存等资源占用的基本单位,而线程是不能独立的占有这些资源的;
(3)进程之间相互独立,通信比较困难,而线程之间共享一块内存区域,通信比较方便;
(4)进程在执行过程中,包含比较固定的入口、执行顺序和出口,而线程的这些过程会被应用程序所控制。
7、如何让一个类成为线程类?
让一个类成为线程类的方式有两种,一个是实现了java.lang.Runnable接口,另一个是继承自java.lang.Thread类。
8、解释Runnable接口与Thread类的区别
Runnable接口与Thread类的区别主要包括一下几个方面:
(1)线程类继承自Thread则不能继承自其它类,而Runnable接口可以;
(2)线程类继承自Thread相对于Runnable来说,使用线程的方法更方便一些;
(3)实现Runnable接口的线程类的多个线程,可以更方便的访问同意变量,而Thread类则需要内部类来进行替代。
9、如何启动一个线程?
继承自Thread类的线程类,可以通过new关键字创建一个线程对象以后,执行start()方法开始一个线程。而实现了Runnable接口的线程类,需要用它的对象实例,作为Thread类构造方法的参数,创建一个Thread对象,然后调用start()方法开始一个线程。
10、如何用synchronized来让线程同步?
sychronized关键字代表要为某一段代码加上一个同步锁,这样的锁是绑定在某一个对象上边的。如果是同步代码块,需要为该synchronized关键字提供一个对象的引用;如果是同步方法,只需要加一个sychronized关键字修饰。
sychronized为某段代码加上锁以后,某个线程进入该段代码之前,首先需要检查该锁是否被占用,如果没有被占用则继续执行;如果已经被占用,则需要等到该锁被释放以后才能继续执行。其中,线程执行完该段代码就是释放锁的标志。
11、如何使用java的线程池?
java提供了java.util.concurrent.ThreadPoolExecutor类来使用线程池,通过它构造的对象,可以很容易地管理线程,并把线程代码与业务代码进行分离。

学习面试题Day06的更多相关文章

  1. 深度学习面试题29:GoogLeNet(Inception V3)

    目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...

  2. 深度学习面试题27:非对称卷积(Asymmetric Convolutions)

    目录 产生背景 举例 参考资料 产生背景 之前在深度学习面试题16:小卷积核级联卷积VS大卷积核卷积中介绍过小卷积核的三个优势: ①整合了三个非线性激活层,代替单一非线性激活层,增加了判别能力. ②减 ...

  3. 深度学习面试题13:AlexNet(1000类图像分类)

    目录 网络结构 两大创新点 参考资料 第一个典型的CNN是LeNet5网络结构,但是第一个引起大家注意的网络却是AlexNet,Alex Krizhevsky其实是Hinton的学生,这个团队领导者是 ...

  4. Java学习之面试题整理

    1,java 基本数据类型有几种?哪几种?(面试题) 8种 byte short int long float double char boolean 2,int类型是几个字节?(面试题) 4字节 3 ...

  5. 深度学习面试题26:GoogLeNet(Inception V2)

    目录 第一层卷积换为分离卷积 一些层的卷积核的个数发生了变化 多个小卷积核代替大卷积核 一些最大值池化换为了平均值池化 完整代码 参考资料 第一层卷积换为分离卷积 net = slim.separab ...

  6. 深度学习面试题25:分离卷积(separable卷积)

    目录 举例 单个张量与多个卷积核的分离卷积 参考资料 举例 分离卷积就是先在深度上分别卷积,然后再进行卷积,对应代码为: import tensorflow as tf # [batch, in_he ...

  7. 深度学习面试题24:在每个深度上分别卷积(depthwise卷积)

    目录 举例 单个张量与多个卷积核在深度上分别卷积 参考资料 举例 如下张量x和卷积核K进行depthwise_conv2d卷积 结果为: depthwise_conv2d和conv2d的不同之处在于c ...

  8. 深度学习面试题21:批量归一化(Batch Normalization,BN)

    目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 参考资料 BN的由来 BN是由Google于201 ...

  9. 深度学习面试题20:GoogLeNet(Inception V1)

    目录 简介 网络结构 对应代码 网络说明 参考资料 简介 2014年,GoogLeNet和VGG是当年ImageNet挑战赛(ILSVRC14)的双雄,GoogLeNet获得了第一名.VGG获得了第二 ...

随机推荐

  1. oracle中的隐式提交(auto commit)

    通常我们执行sql或pl/sql时,需要我们手工提交.这样才能使所做的更改永久保存到数据库. 但有时即使我们没有在sql或pl/sql中发出commit命令,所做的更改也会被提交.这种提交是在某些特定 ...

  2. 快捷设置IE代理小工具

    时间:2015-02-06 起因: 公司新装了PLM系统,用这个系统必须使用指定IP段的IP才能访问.所以为了还能愉快的继续使用代理进行特定网站的访问,我们必须要频繁的去设置IE代理,这也太麻烦了吧. ...

  3. 研读代码必须掌握的Eclipse快捷键

    1. Ctrl+左键 和F3 这个是大多数人经常用到的,用来查看变量.方法.类的定义跳到光标所在标识符的定义代码.当按执行流程阅读时,F3实现了大部分导航动作. 2 Ctrl+Shift+G在工作空间 ...

  4. nginx配置location [=|~|~*|^~] /uri/ { … }用法

    版权声明:https://github.com/wusuopubupt ====== nginx location语法 基本语法:location [=|~|~*|^~] /uri/ { … } = ...

  5. webstorm 11 安装配置 grunt 时遇到的问题及解决办法

    想学grunt的可以看看这篇文章,写的很有意思,教程之类的我就不写了,网上很多资料,我就记录下我遇到的问题和解决办法. http://yujiangshui.com/grunt-basic-tutor ...

  6. 下一代Jquery模板-----JsRender

    在ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender中提到了JsRender.JsRedner和JsViews(JsViews是再JsRender基础 ...

  7. 如何让WIN32应用程序支持MFC类库

    参考链接:http://wenku.baidu.com/view/68fc340c79563c1ec5da714b.html

  8. 1027-Quicksum

    描述 A checksum is an algorithm that scans a packet of data and returns a single number. The idea is t ...

  9. Jmeter java协议测试jar和依赖jar的路径研究

    昨天在使用2.12版本的jmeter时,执行多机负载测试一直报错,最终查明是使用不当的问题,现将详情记录如下,使用jmeter测试java协议脚本时要注意以下几点: 1. jar包的方式路径一定是这样 ...

  10. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】07-基本数据类型

    C语言有丰富的数据类型,因此它很适合用来编写数据库,如DB2.Oracle等大型数据库都是C语言写的.其中,提供了4种最常用的基本数据类型:char.int.float.double,使用这些数据类型 ...