android面试题1 1、Android中五种数据存储方式分别是什么?他们的特点? Android提供了五种存取数据的方式 1)SharedPreference,存放较少的五种类型的数据,只下面是小编为大家整理的2023年度android面试题3篇,供大家参考。
android面试题1
1、Android中五种数据存储方式分别是什么?他们的特点?
Android提供了五种存取数据的方式
1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中;
2)SQLite数据库,存放各种数据,是一个轻量级的嵌入式数据库;
3)File文件,通过读取写入方式生成文件存放数据;
4)ContentProvider,主要用于让其他应用程序使用保存的数据;
5)通过网络获取数据和写入数据到网络存储空间。
2、说说 android 中 mvc 的具体体现
mvc是model,view,controller的缩写,mvc包含三个部分:
模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。 视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。
android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:
1)视图(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入。
2)控制层(controller):android的控制层的重任通常落在了众多的`acitvity的肩上,这句话也就暗含了不要在activity中写过多的代码,要通过activity交割model业务逻辑层处理,这样做的另外一个原因是android中的activity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
3、简述SharedPreferences存储方式以及SharedPreferences与SQLite数据库的区别。
SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
4、描述handler 机制的原理
andriod提供了 Handler 和 Looper 来满足线程间的通信。
Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。
3)Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
android面试题2
1. 请描述下Activity的声明周期。
onCreate->onStart->onRemuse->onPause->onStop->onRestart->onDestroy
2. 如果后台的Activity由于某种原因被系统回收,如何在回收之前保存当前状态。
onSaveInstanceState().
程序中的某一个Activity A 在运行时,主动或被动的运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又回来找A,这个时候有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被回收的就直接执行onResume(),跳过onCreate()。
3. 如何将一个Activity设置成窗口样式。
在AndroidManifext.xml中Activity定义处添加
android:theme="@android:style/Theme.Dialog" 或
android:theme="@android:style/Theme.Translucent"。
4. 如何退出Activity?如何安全退出已调用多个Activity的Application?
01.Activity.finish();
也可以用killProcess()和System.exit()这样的方法
2.用ActivityManager的restartPackage方法
5. 请介绍下android大众常用的五种布局。
FrameLayout(框架布局)
只可以有一个控件,并且不能设计这个控件的位置,控件会放在左上角
LinearLayout(线性布局)
一行只能控制一个控件的线性布局,所以当有很多控件需要在一个界面中列出时,可以用LinearLayout布局
AbsoluteLayout(绝对布局)
可以放置多个控件,并且可以自己定义控件的x,y的位置
RelativeLayout(相对布局)
比如要在一行上显示多个控件,这时就要用到相对布局
TableLayout(表格布局)
将子元素的位置分配到行或列中,一个TableLayout由许多的TableRow组成
6. 请介绍下android的数据存储方式。
SharedPreferences方式
用来存储”key-value paires”格式的数据,它是一个轻量级的"键值存储机制,只可以存储基本数据类型,可以通过它保存一些上次用户所做的修改操作
文件存储方式
它通过FileInputStream和FileOutputStream对文件进行操作。但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件,如果要共享数据就用Content Providers
SQLite数据库方式
Android提供的一个标准的数据库,支持SQL语句
内容提供器(Content provider)方式
是所有应用程序之间数据存储和检索的桥梁,它的作用是使得各个应用程序之间实现数据共享
网络存储方式
通过网络来存储和获取数据
android面试题3
1、IntentService有何优点?
答:IntentService 的好处
* Acitivity的进程,当处理Intent的时候,会产生一个对应的Service
* Android的进程处理器现在会尽可能的不kill掉你
* 非常容易使用
2、横竖屏切换时候activity的生命周期?
01、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
02、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
03、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
3. 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?
解答:可以将dictionary.db文件复制到Eclipse Android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到res aw目录中
4. 如何将打开res aw目录中的数据库文件?
解答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res aw目录中资源的 InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。
5. Android引入广播机制的用意?
答:a:从MVC的角度考虑(应用程序内)
其实回答这个问题的时候还可以这样问,android为什么要有那4大组件,现在的移动开发模型基本上也是照搬的web那一套MVC架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。
b:程序间互通消息(例如在自己的应用程序内监听系统来电)
c:效率上(参考UDP的广播协议在局域网的方便性)
d:设计模式上(反转控制的一种应用,类似监听者模式)
android面试题3篇扩展阅读
android面试题3篇(扩展1)
——android面试题整理3篇
android面试题整理1
1. 请介绍下android的数据存储方式。
SharedPreferences方式
用来存储”key-value paires”格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型,可以通过它保存一些上次用户所做的修改操作
文件存储方式
它通过FileInputStream和FileOutputStream对文件进行操作。但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件,如果要共享数据就用Content Providers
SQLite数据库方式
Android提供的一个标准的数据库,支持SQL语句
内容提供器(Content provider)方式
是所有应用程序之间数据存储和检索的桥梁,它的作用是使得各个应用程序之间实现数据共享
网络存储方式
通过网络来存储和获取数据
2.请介绍下ContentProvider是如何实现数据共享的。
Android提供了ContentProvider,一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProviders是以类似数据库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,只不过是采用URI来表示外界需要访问的“数据库”。外部访问通过ContentResolver去访问并操作这些被暴露的数据。
3.如何启用Service,如何停用Service。
Intent intent = new Intent();
intent.setClass(this,cba.class);
startService(intent);
stopService(intent);
4. 请解释下在单线程模型中Message,Handler,Message Queue,Looper之间的关系。
Message
Message消息,理解为线程间交流的信息,处理数据后台线程需要更新UI,则发送Message内含一些数据给UI线程。
Handler
Handler处理者,是Message的主要处理者,负责Message的发送,Message内容的执行处理。后台线程就是通过传进来的 Handler对象引用来sendMessage(Message)。而使用Handler,需要implement 该类的 handleMessage(Message)方法,它是处理这些Message的操作内容,例如Update UI。通常需要子类化Handler来实现handleMessage方法。
Message Queue
Message Queue消息队列,用来存放通过Handler发布的消息,按照先进先出执行。 每个message queue都会有一个对应的Handler。Handler会向message queue通过两种方法发送消息:sendMessage或post。这两种消息都会插在message queue队尾并按先进先出执行。但通过这两种方法发送的消息执行的方式略有不同:通过sendMessage发送的是一个message对象,会被 Handler的handleMessage()函数处理;而通过post方法发送的是一个runnable对象,则会自己执行。
Looper
Looper是每条线程里的Message Queue的管家。Android没有Global的Message Queue,而Android会自动替主线程(UI线程)建立Message Queue,但在子线程里并没有建立Message Queue。所以调用Looper.getMainLooper()得到的主线程的Looper不为NULL,但调用Looper.myLooper() 得到当前线程的Looper就有可能为NULL。
5.请解释下Android程序运行时权限与文件系统权限的区别。
Android程序运行 是虚拟机Dalvik( android授权)
文件系统 是 linux 内核 授权
android面试题整理2
1、 有一个一维整型数组int[] data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
答:像素数组int[]data里就是一个个像素的颜色值,你循环和0xffffffff比较,如果相等,那么就把这个值换成0x88ffffff就行了,这样像素数组里所有的白色不透明(0xffffffff)都变成的半透明
2、 你如何评价Android系统?优缺点。
优点:开源特性,得到众多厂商支持。
软件发展很快。
界面UI,系统优化不错。
缺点:版本过多,升级过快。
用户体验不一致。
3、android中的动画有哪几类,他们的特点和区别是什么?
两种,
一种是Tween动画(补间动画),
一种是Frame动画(逐帧动画)。
Tween动画:使试图组件移动,放大,缩小以及产生透明度的变化。
Frame动画:传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
4、横竖屏切换时activity的生命周期
不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
设置Activity的android:configChanges="orientation"时,切横,竖屏时生命周期只会执行一次。
设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用声明周期,只会执行onConfigurationChanged方法。
进程与线程
当一个程序开始运行时,它就是一个进程,进程包含运行中的程序和程序所使用的内存和系统资源。而一个进程又是由多个线程组成的。引入线程优点是易于调度,提供开发效率,通过线程可以方便有效的实现并发,进程可创建多个线程来执行同一个程序的不同部分,开销小,创建线程比创建进程要快,所需开销很少。
android面试题3篇(扩展2)
——android测试面试题3篇
android测试面试题1
1、 写出你所知道的常见异常(至少5个)
NullPointerException 空指针
ClassCastException 强制转换错误
ArrayIndexOutOfBoundsException 下标越界异常
FileNotFoundException 文件找不到异常
ArithMeticException 算术异常如 5/0
ClassNotFoundException 类找不到异常
JSONParserException json解析错误异常
NumberFormatException 数组格式化异常
2、 Activity的生命周期包括那几个方法,其中页面打开时执行什么,页面关闭时执行什么
onCreate—onStart onResume onRestart
onPause onStop onDestroy
打开:onCreate onStart onResume
关闭:onPause onStop onDesotry
A界面被完全遮挡:A会onPause onStop
完全遮挡它的界面关闭,A会:onRestart onStart onResume
A界面被半遮挡:A会onPause
半遮挡它的界面关闭:A会:onResume
3、 Android中打开一个Activity有哪两种方法,区别是什么
startActivity
startActivityForResult
startActivityForResult方式打开的页面关闭时,前一个页面会得到一个自动onActivityResult方法触发
4、 Android中本地数据存储有哪几种方式,分别适合用来存储什么样的数据?
SharedPreferences适合存储比较简单的、配置文件信息(xml形式存储)
Sqlite: :存储比较多的数据信息
文件存储:存储比较简单的信息
android测试面试题2
1、 Android中的布局有哪几种?
线性布局 LinearLayout
相对布局 RelativeLayout
绝对布局(废弃不用) AbsoluteLayout
帧布局 FrameLayout
表格布局 TableLayout
网格布局 GridLayout
2、 Andorid中的四大组件是什么?分别用来干什么,越详细越好
Activity:表示一个可见的界面
Service:后台运行的*面一种组件(音乐后台播放、文件后台下载)
BroadcastReceiver:自动接收系统、自定义发送的广播信息并作出响应的.组件(收发短信,)
ContentProvider:不同应用程序之间数据共享的一种组件
3、 Android的应用程序架构是什么?
Linux内核层
系统运行库层
应用程序框架层
应用程序层
android面试题3篇(扩展3)
——android面试题练习3篇
android面试题练习1
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(c),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(g)
A、输入流和输出流 B、字节流和字符流 C、节点流和处理流
D、File stream E、Pipe stream F、Random stream G、Filter stream
2.下列代码的执行结果是:(b)
public class Test3{ public static void main(String args[]){ System.out.print(100%3); System.out.print(","); System.out.println(100%3.0); } }
A、1,1 B、1,1.0 C、1.0,1 D、1.0,1.0
3.在继承中,关于构造方法的说明,下列说法错误的是(d)
A、子类无条件的继承父类的无参构造方法,
B、子类可以引用父类中的有参构造方法,使用super关键字,
C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法,
D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。
4.以下程序的运行结果为( b)
public class IfTest{
public static void main(String args[]){
int x=3;
int y=1;
if(x==y)
System.out.println("Not equal");
else
System.out.println("Equal");
}
}
A、Not equal B、Equal C、无输出 D、编译出错
5.Java语言中字符串“学Java”所占的内存空间是(a)
A. 6个字节
B. 7个字节
C. 10个字节
D. 11个字节
6.关于下列程序段的输出结果,说法正确的是:(d )
public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}
A、有错误,变量i没有初始化。
B、null
C、1
D、0
7.下列哪些语句关于内存回收的说明是正确的? (b )
A、 程序员必须创建一个线程来释放内存
B、 内存回收程序负责释放无用内存
C、 内存回收程序允许程序员直接释放内存
D、 内存回收程序可以在指定的时间释放内存对象
8.下面异常是属于Runtime Exception 的是(abcd)(多选)
A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、BufferUnderflowException
9. Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c
A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12
10.下列程序段的输出结果是:(b )
void complicatedexpression_r(){
int x=20, y=30;
boolean b;
b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;
System.out.println(b);
}
A、true B、false C、1 D、0
11.activity对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d)
A、onPause() B、onCreate() C、 onResume() D、onStart()
12.Intent传递数据时,下列的数据类型哪些可以被传递(abcd)(多选)
A、Serializable B、charsequence C、Parcelable D、Bundle
13.android 中下列属于Intent的作用的是(c)
A、实现应用程序间的数据共享
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失
C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的"纽带
D、处理一个应用程序整体性的工作
14.下列属于SAX解析xml文件的优点的是(b)
A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能
B、不用事先调入整个文档,占用资源少
android面试题练习2
1.我们用___int____来定义一个整数,用___char____来定义一个字符类型,称为原始数据类型。
2.android中常用的四个布局是framlayout,linenarlayout,relativelayout和tablelayout。 3.android 的四大组件是activiey,service,broadcast和contentprovide。
4.java.io包中的objectinputstream和objectoutputstream类主要用于对对象(Object)的读写。
5.android 中service的实现方法是:startservice和bindservice。
6.activity一般会重载
7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory()外还有onrestart,onresume,onpause,onstop。
8.当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行 的回调函数是startActivityResult()。
9.请使用命令行的方式创建一个名字为myAvd,sdk版本为2.2,sd卡是在d盘的根目录下, 名字为scard.img, 并指定屏幕大小HVGA.____________________________________。 10.程序运行的结果是:_____good and gbc__________。
参考答案
1. int char
2.FrameLayout,LilnearLayout,RelativeLayout,TableLayout
3.Activity,Broadcast,Service,ContentProvide
4.ObjectInputStream ObjectOutputSteam
5.startService ,bindService
6.onRestart(),onResume(),onPause(),onStop()
7.SharedPreferences存储,文件存储,SQLite存储,ContentProvider,网络存储
8.startActivityResult()
9.adnroid create acd -n myAvd -t 8 -s HVDA - C d:\card.img 10.good and gbc
android面试题3篇(扩展4)
——linux面试题及答案3篇
linux面试题及答案1
1. 如何暂停一个正在运行的进程,把其放在后台(不运行)?答案:为了停止正在运行的进程,让其在后台运行,我们可以使用组合键 Ctrl+Z。
2. 什么是安装Linux所需的最小分区数量,以及如何查看系统启动信息?答案:单独一个/root分区足以执行所有的系统任务,但是强烈建议安装Linux时,需要至少三个分区:/root,/boot,/swap。一个IDE硬盘驱动器支持高达63个分区,SCSI硬盘驱动器支持超过15个分区。
为了检查启动信息,我们可以使用cat或者dmesg命令,如下所示:
#cat /var/log/messages
或者
#dmesg
3. 在你的Linux机器上跟踪系统事件的守护进程名是什么?答案:"syslogd",它负责跟踪系统信息,并将跟踪日志存储在特定的日志文件里。
4. 在/root分区运行"fsck"命令的最低要求是什么?答案:/root分区必须挂载为只读模式,而不是读写模式
5. 如何分层复制/home目录到另一个目录?答案:Linux的"cpio"命令起到了效果。"cpio"可以分层地复制文件和目录层次结构到另一个位置。
6. 在Linux中,怎样实现日志文件的自动替换?答案:"logrotate"提供日志自动替换功能。
7. 怎样知道Linux中是谁在安排工作?答案:使用"at"命令加上"-l"选项,就可以查出。
8. 如何在不解压tar包的前提下,查看包里的内容?答案:使用"tar -tvf"。选项‘t’(显示内容),‘v’(详细报告tar处理的文件信息),‘f’(使用档案文件或者设备)
9. 什么是页面错误,它是怎么发生的?答案:当一个程序请求内存中不存在的数据时,就会产生页面错误,导致的结果就是程序停止。
10. 什么是在程序中返回代码?答案:返回代码是shell的特性。返回代码显示了程序的状态,一个成功的程序执行后返回‘0’,&&可以用来决定那个应用程序先执行。
android面试题3篇(扩展5)
——php面试题目3篇
php面试题目1
1、对于大流量网站,采用什么方法来解决访问量的问题
确认服务器硬件是否能够支持当前的流量
数据库读写分离,优化数据表
程序功能规则,禁止外部的盗链
控制大文件的下载
使用不同主机分流主要流量
2、语句include和require的区别是什么?为避免多次包含同一文件,可以用(?)语句代替他们
require是无条件包含,也就是如果一个流程里加入require,无论条件成立与否都会先执行require,当文件不存在或者无法打开的时候,会提示错误,并且会终止程序执行
include有返回值,而require没有(可能因为如此require的速度比include快),如果被包含的文件不存在的化,那么会提示一个错误,但是程序会继续执行下去
注意:包含文件不存在或者语法错误的时候require是致命的,而include不是
require_once表示了只包含一次,避免了重复包含
3、谈谈mvc的认识
由模型、视图、控制器完成的应用程序,由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图
4、 说明php中传值与传引用的区别,并说明传值什么时候传引用?
变量默认总是传值赋值,那也就是说,当将一个表达式的值赋予一个变量时,整个表达式的值被赋值到目标变量,这意味着:当一个变量的赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量
php也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的__引用__(换言之,成为了其别名或者指向)了原始变量。改动的新的变量将影响到原始变量,反之亦然。使用引用赋值,简单地将一个&符号加到将要赋值的变量前(源变量)
对象默认是传引用
对于较大是的数据,传引用比较好,这样可以节省内存的开销
php面试题目2
1、双引号和单引号的区别
双引号解释变量,单引号不解释变量
双引号里插入单引号,其中单引号里如果有变量的话,变量解释
双引号的变量名后面必须要有一个非数字、字母、下划线的特殊字符,或者用{}讲变量括起来,否则会将变量名后面的部分当做一个整体,引起语法错误
双引号解释转义字符,单引号不解释转义字符,但是解释"\和\\能使单引号字符尽量使用单引号,单引号的效率比双引号要高(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)
2、常用的超全局变量(8个)
$_GET ----->get传送方式
$POST ----->post传送方式
$REQUEST ----->可以接收到get和post两种方式的值
***
$GLOBALS ----->所有的变量都放在里面
$FILE ----->上传文件使用
$SERVER ----->系统环境变量
* **
$SESSION ----->会话控制的时候会用到
$COOKIE ----->会话控制的时候会用到
3、HTTP中POST、GET、PUT、DELETE方式的区别
HTTP定义了与服务器交互的不同的方法,最基本的是POST、GET、PUT、DELETE,与其比不可少的URL的全称是资源描述符,我们可以这样理解:url描述了一个网络上资源,而post、get、put、delegate就是对这个资源进行增、删、改、查的操作!
3.1表单中get和post提交方式的区别
get是把参数数据队列加到提交表单的action属性所指的url中,值和表单内各个字段一一对应,从url中可以看到;post是通过HTTPPOST机制,将表单内各个字段与其内容防止在HTML的head中一起传送到action属性所指的url地址,用户看不到这个过程。
对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
get传送的数据量较小,post传送的数据量较大,一般被默认不受限制,但在理论上,IIS4中最大量为80kb,IIS5中为1000k,get安全性非常低,post安全性较高。
3.2
GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
php面试题目3
1、PHP介绍
Hypertext Preprocessor----超文本预处理器
Personal Home Page 原始名称
目标用途: 允许web开发人员快速编写动态生成的web页面,与其他页面相比,PHP是将程序嵌入到HTML文档中去执行,效率比完全生成HTML编辑的CGI高很多
HTML: Hypertext Markup Language
创始人: 拉姆斯勒·勒多夫Rasmus Lerdorf,1968年生,加拿大滑铁卢大学勒多夫最开始是为了维护个人网页,用prel语言写了维护程序,之后又用c进行了重写,最终衍生出php/fi
时间轴:
1995.06.08将PHP/FI公开释出
1995 php2.0,加入了对MySQL的支持
1997 php3.0
2000 php4.0
2008 php5.0
由于php6.0没有完全解决Unicode编码,所以基本没有生产线上的应用,基本只是一款概念产品,很多功能已经在php5.3.3和php5.3.4上实现
常见的IDE(Intergrated Development Environment): 集成开发环境
Coda(mac)
PHPStrom
Adobe Dreamweaver
NetBeans
常见文本编辑器,具备代码高亮:
NodePad++
SublimeText
PHP优势
2、PHP特性:
php独特混合了C,Java,Prel以及PHP自创的语法。
可以比CGI或者Prel更快速去执行动态网页,与其他变成语言相比,PHP是讲程序嵌入到HTML文档中去执行,执行效率比完全生成HTML编辑的CGI要高很多,所有的CGI都能实现支持几乎所有流行的数据库以及操作系统。
PHP可以使用C,C++进行程序的扩展
PHP优势:
开放源代码
免费性
快捷性
跨*台强
效率高
图形处理
面向对象
专业专注
PHP技术应用:
静态页面生成
数据库缓存
过程缓存
div+css w3c标准
大负荷
分布式
flex
支持MVC
Smarty模块引擎
PHP认证级别
初级 IFE:Index Front Engineer 前端工程师
中级 IPE:Index PHP Engineer PHP工程师
高级 IAE:Index Architecture Engineer 架构工程师
3、echo、print_r、print、var_dump之间的区别
* echo、print是php语句,var_dump和print_r是函数
* echo 输出一个或多个字符串,中间以逗号隔开,没有返回值是语言结构而不是真正的函数,因此不能作为表达式的一部分使用
* print也是php的一个关键字,有返回值 只能打印出简单类型变量的值(如int,string),如果字符串显示成功则返回true,否则返回false
* print_r 可以打印出复杂类型变量的值(如数组、对象)以列表的形式显示,并以array、object开头,但print_r输出布尔值和NULL的结果没有意义,因为都是打印"\n",因此var_dump()函数更适合调试
* var_dump() 判断一个变量的类型和长度,并输出变量的数值
android面试题3篇(扩展6)
——web软件测试面试题3篇
web软件测试面试题1
1、根据你的经验说说你对软件测试/质量保证的理解
软件质量保证与测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据和预期的输出结果),并根据这些测试用例去运行程序,以发现错误的过程。它是对应用程序的各个方面进行测试以检查其功能、语言有效性及其外观排布。
2、软件测试的流程是什么?
需求调查:全面了解系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时间安排、功能需求、性能需求、质量需求及测试要求等。根据系统概况进行项目所需的人员、时间和工作量估计以及项目报价。
制定初步的项目计划。
测试准备:组织测试团队、培训、建立测试和管理环境等。
测试设计:按照测试要求进行每个测试项的测试设计,包括测试用例的设计和测试脚本的开发等。
测试实施:按照测试计划实施测试。
测试评估:根据测试的结果,出具测试评估报告。
3、你对SQA的职责和工作活动(如软件度量)的理解?
SQA就是独立于软件开发的项目组,通过对软件开发过程的监控,来保证软件的开发流程按照指定的CMM规程(如果有相应的CMM规程),对于不符合项及时提出建议和改进方案,必要时可以向高层经理汇报以求问题的解决。通过这样的途径来预防缺陷的引入,从而减少后期软件的维护成本。SQA主要的工作活动包括制定SQA工作计划,参与阶段产物的评审,进行过程质量、功能配置及物理配置的审计等;对项目开发过程中产生的数据进行度量等等。
4、说说你对软件配置管理的理解
项目在开发过程中要用相应的配置管理工具对配置项(包括各个阶段的产物)进行变更控制,配置管理的使用取决于项目规模和复杂性及风险的水*。软件的规模越大,配置管理就越显得重要。还有在配置管理中,有一个很重要的概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并只有经过授权后才能变更这个标准。配置管理工具主要有CC,VSS,CVS,SVN等,我只用过SVN,对其他的工具不是很熟悉。
5、怎样写测试计划和测试用例
简单点,测试计划里应有详细的测试策略和测试方法,合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。
web软件测试面试题2
1. Gogo项目的测试计划是如何出来的?
根据说明文档找处整个网站的重点模块,根据其要求和对网站实际操作得来的信息在于同组人协商讨论写出测试计划。
2. 请使用DOS命令备份一个名为:TEST,用户名及密码为:user/password的oracle数据库到d盘根目录下保存文件名为test。简述在oracle中建立一个可用实例的主要步骤(提示:从建库描述到初始基本数据)可用性判断标准主要是主观的感觉,请思考,有没有一些量化的标准,从而可以更加客观地评价可用性的好坏?
3. 现在一个程序实现这样的功能:读入三个整数值,这三个整数值表示三角形的三个边长,该程序打印信息表明三角形是不等边三角形、等腰三角形或等边三角形。请开发一个测试用例集测试该程序,注意涵盖尽可能多的情形,并加入适当的出错处理
(1)正常的不等边三角形
(2)正常的等边三角形
(3)正常的等腰三角形,包括两条相等的边的三种不同的排列方法
(4)正常的直角三角形
(5)正常等腰直角三角形,包括两边相等的三种不同的排列方法
(6)退化的三角形(即,两边之和等于第三边),包括三种不同的排列方法
(7)三条边不能构成三角形(两边之和小于第三边),包括三种排列方法
(8)一条边长度为零,两条边为零,三边为零的9种排列方法
(9)输入数据包含负数
(10)输入数据不全(只知道2边的长度不知道第三边)
(11)输入的数据不符合程序规定的数据类型.
4.你为什么选择软件测试行业
因为之前有了解软件测试这个行业,觉得他的`发展前景很好。也对
5.根据你以前的工作经验描述一下软件开发、测试过程,由那些角色负责,你做什么
要有架构师、开发经理、测试经理、程序员、测试员
我在里面主要是负责所分到的模块执行测试用例。
结合你以前的学习和工作经验,你认为如何做好测试。
根据我以前的工作经验,我认为做好工作首先要有一个好的沟通,只有沟通无障碍了,才会有好的协作,才会有跟好的效率,再一个就是技术一定要过关,做测试要有足够的耐心,和一个良好的工作习惯,不懂的就问,实时与同事沟通这样的话才能做好测试工作。
android面试题3篇(扩展7)
——华为java面试题3篇
华为java面试题1
1.Error与Exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
2.statement 和preparestatement区别
1)创建时的区别:
Statement stm=con.createStatement();
PreparedStatement pstm=con.prepareStatement(sql);
执行的时候:
stm.execute(sql);
pstm.execute();
2)pstm一旦绑定了SQL,此pstm就不能执行其他的Sql,即只能执行一条SQL命令。 stm可以执行多条SQL命令。
3)对于执行同构的sql(只有值不同,其他结构都相同),用pstm的执行效率比较的`高,对于异构的SQL语句,Statement的执行效率要高。
4)当需要外部变量的时候,pstm的执行效率更高.
华为java面试题2
1.short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) short s1 = 1; s1 += 1;(可以正确编译)
2.float型float f=3.4是否正确?
不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 或float f = 3.4f 在java里面,没小数点的默认是int,有小数点的默认是 double;
3.ArrayList和Vector的区别,HashMap和Hashtable的区别。
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。