1.关于http协议以下说法不正确
的是:
1.304表示临时重定向
3.http的header分割符是\r
HTTP 304 未改变说明无需再次传输请求的内容,也就是说可以使用缓存的内容 301永久重定向、302暂时重定向
http请求字段range:
格式: Range: bytes=start-end
- 请求资源的部分内容(不包括响应头的大小),单位是byte,即字节,从0开始.
- 如果服务器能够正常响应的话,服务器会返回 206 Partial Content 的状态码及说明.
- 如果不能处理这种Range的话,就会返回整个资源以及响应状态码为 200 OK .
http的header分割符:\r\n
2.关于计算机网络,以下说法正确的是
(1)在向下的过程中,需要添加下层协议所需要的首部或者尾部
(2)在向上的过程中不断拆开首部和尾部
(3)在向上的过程中,需要添加下层协议所需要的首部或者尾部
(4)在向下的过程中不断拆开首部和尾部
(5)SMTP属于TCP协议
(6)POP3属于UDP协议
(7)DNS属于TCP协议
(8)Telnet属于UDP协议
POP3属于TCP。
DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。
Telnet是TCP。
3.以下哪种情况会使得进程由执行状态转变成阻塞状态
A 时间片用完
B 进程调度
C I/O完成
D I/O请求
执行→阻塞 正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。 知识点:
(1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。(2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。(3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。(4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
1:就绪->执行,当前运行进程阻塞,调度程序选一个优先权最高的进程占有处理机;
2:执行->就绪, 当前运行进程时间片用完;
3:执行->阻塞,当前运行进程等待键盘输入,进入了睡眠状态。
4:阻塞->就绪,I/O操作完成,被中断处理程序唤醒。
4.在JDK1.8中,HashMap没有实现哪个接口( )。
A Map
B AbstractMap
C Serializable
D Cloneable
HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。
Cloneable接口没有定义成员。它通常用于指明被创建的一个允许对对象进行位复制(也就是对象副本)的类。
5.下面关于线程同步说法错误的是()
A 用户模式和内核模式下同步方式不同
B 对于临界区的访问适用于单进程中线程间的同步
C 事件对象适用于多个进程间的各线程实现同步
D 互斥对象也只适用于单进程中线程间的同步
用户模式下的同步构造不涉及cpu模式切换,速度快,但是仅限于单个进程。内核对象同步会导致cpu模式切换,代价比较大,但是支持多个进程间的同步。
只要把临界区置于P(sem)和V(sem)之间,即可实现进程间的互斥。
6.下面关于死锁的说法错误的是()
A 死锁是指多个进程因抢占资源而发生的一种阻塞且相互等待的现象
B 死锁的产生源于系统资源不足和进程推进顺序不当
C 可以通过终止和撤销进程来解除死锁
D 银行家算法用在预防死锁策略中
银行家算法(Banker’s Algorithm)是一个避免死锁(Deadlock)的著名算法
7.关于控件TextView的属性,下列使用正确的是 :
A layout_marginLeft为控件左边框,距离父容器的距离(外边距), paddingLeft为控件内部,距离控件左边框的距离(内边距)
B textview的scrollY属性可以用来设置这个view在其父view里面的相对垂直位置
C inputType为输入类型,可以选择输入纯符号,或者纯数字等.
D Gravity为内部文字摆放的位置,可以选择inside和outside.
textview的scrollY属性设置滚动条的吧
inputType设置文本的类型,用于帮助输入法显示合适的键盘类型
Gravity为内部文字的对齐方式,没有inside和outside
8.关于listview说法下列错误的是:
A 如果希望使用listview,则必须有对应的适配器Adapter才能使其正常工作
B listview经常使用的Adapter有一个notifyDataSetChanged()方法,当数据有更新时一般会调用此方法通知listview重新渲染 ,此方法的缺陷是会导致listview视图重新回到最上面.
C ListView内部有缓存实现机制,但Adapter的getView实现还是需要自己判断convertView是否是null来做分支处理
D 在getView方法内是不允许做耗时操作的.
- 使用
notifyDataSetChanged()
会记住你划到的位置,重新加载数据的时候不会改变位置,只是改变了数据;- 使用
notifyDataSetInvalidated()
时,数据改变的同时,自动滑到顶部第0条的位置.
9.关于布局容器,下列说法错误的是:
A orientation属性只有LinearLayout才会用到,标识了子控件的摆放顺序.(横向还是纵向)
B ViewGroup是绝大多数布局容器的父类,一般复杂的自定义容器都会继承ViewGroup来做特殊修改.
C 一般情况下,子容器的大小是不可以超过父容器的,但是当属性clipChildren设置成false的时候除外.
D 当某一个子view被成功创建后,是可用通过addview方法被添加到多个不同的布局容器中去的.
同一个View对象,不能同时有两个父容器
10.关于EditText的使用,下列说法错误的是:
A 可以通过setTypeface方法设置文字的字体
B addTextChangedListener方法可以为EditText设置输入过程的监听.
C android:digits属性限制EditText的输入字符,所有输入的字符必须在digits给出的范围内,否则无法输入到EditText文本框.
D EditText可以使用setEllipsize方法设置MARQUEE效果
MARQUEE:创建一个滚动的文本字幕。EditText不支持该效果
11.Android工程大部分使用gradle进行构建.下列关于gradle脚本相关说法错误的是
A 一般在dependencies内添加各种三方引用,包括jar,module,aar,maven等.
B signingConfigs内用来配置签名文件,一般分release和debug两种配置.
C gradle的主体打包apk流程是:编译代码和资源,生成dex,生成apk,zipalign,签名
D defaultConfig内用来指定APP的版本号,最低运行版本,等
先签名再zipalign(对齐)
打包流程: 1、打包资源文件,生成R.java文件 2、处理aidl文件,生成相应java 文件
3、编译工程源代码,生成相应class 文件 4、转换所有class文件,生成classes.dex文件 5、打包生成apk
6、对apk文件进行签名 7、对签名后的apk文件进行对齐处理(用到的工具是zipalign)
简答:列举一下Android的Drawable子类,并简单描述下他的功能。再列举下Drawable这个类里面你所了解的方法,并也简单描述下他的功能
Drawable资源是Android应用中使用最广泛的资源,它不仅可以使用各种格式的图片资源,也可以使用多种xml文件资源。
Drawable的分类
Drawable的子类包括
ColorDrawable、GradientDrawable、BitmapDrawable、NinePatchDrawable、InsetDrawable、ClipDrawable、ScaleDrawable、RotateDrawable、AnimationDrawable、LayerDrawable、StateListDrawable、TransitionDrawable、VectorDrawable、ShapeDrawable
1.ColorDrawable
ColorDrawable是最简单的Drawable,也是平时用的最多的,比如:
ColorDrawable是一个专门用来使用指定的颜色来填充画布的Drawable,当它被绘制到画布上时会使用一种指定的颜色填充Paint,在画布上绘制出一块单色区域。
2.BitmapDrawable
BitmapDrawable是对bitmap的一种包装,可以设置它包装的bitmap在BitmapDrawable区域内的绘制方式,如平铺、拉伸填充或者保持图片原始尺寸,也可以在BitmapDrawable区域内部使用gravity指定的对齐方式。
3.GradientDrawable
GradientDrawable表示一个渐变区域,可以实现线性渐变、发散渐变和平铺渐变效果。
4.ScaleDrawable
ScaleDrawable是对一个Drawable进行缩放操作,可以根据level属性控制这个drawable的缩放比例,也可以设置它在容器中的对齐方式。
5.RotateDrawable
RotateDrawable用来控制drawable的旋转,在xml文件中使用rotate作为根元素来创建RotateDrawable
6.AnimationDrawable
AnimationDrawable是用来实现Android帧动画的,就是把一系列的Drawable按照一定的顺序一帧帧的播放;只适用于不要进行控制的帧动画,例如刷新时的进度条素材。
在xml文件中使用作为根节点来创建AnimationDrawable;相关的属性方法如下:
android:oneshot 设置是否需要循环播放,false为循环播放;
duration 帧间隔时间,通常我们会设置为300毫秒;
等等等等
Drawable类的核心是draw函数的实现,这个函数是一个抽象函数,派生类必须要实现他,函数的入参是一个Canvas画布对象,所有需要绘制的东西都最终绘制到画布上面去:
既然绘制提供了画布上下文,那么就还需要提供一个可绘制的区域,下面方法就是用来指定绘制的区域。Drawable在绘制调用draw函数之前必须要先指定绘制的区域,这个区域也是Canvas中要绘制的区域。一旦用户改变了绘制区域时会激发onBoundsChange方法,派生类可以重载onBoundsChange来实现区域变更的处理。
等等
部分参考 https://www.jianshu.com/p/578125001dc2