操作系统面试题(java基础面试题有哪些)

本文目录
- java基础面试题有哪些
- J2EE经典面试题及答案
- android面试题及答案
- c++经典面试题及答案
- plc面试基础知识及经验分享
- linux认证的面试题及答案
- 运维必须掌握的Linux面试题
- Linux运维工程师面试题库及答案
- Java面试中都会遇到哪些问题
java基础面试题有哪些
下面是10道java基础面试题,后附答案
1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。
Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.“static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是static 的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。
3.JDK 和 JRE 的区别是什么?
Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。
4.是否可以在 static 环境中访问非 static 变量?
static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java 支持的数据类型有哪些?什么是自动拆装箱?
Java 语言支持的 8 中基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。
6.Java 支持多继承么?
不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。
Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。
8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
9.接口和抽象类的区别是什么?
Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。
Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
最后祝你面试顺利!
J2EE经典面试题及答案
J2EE经典面试题及答案
J2EE,使用Java技术开发企业级应用的一种事实上的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。下面为各位考生分享的是J2EE经典面试题及答案,希望对大家有所帮助!
1.MVC的各个部分都有那些技术来实现?如何实现?
答:MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
2.J2EE是什么?
答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。
3.J2EE是技术还是平台还是框架?
答:J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
4.STRUTS的应用(如STRUTS架构)
答:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能:
一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。
二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。
三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。
5.WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
答:Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。
JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。
WSDL是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
6.C/S 与 B/S 区别:
答:有如下八个方面的不同:
(1)硬件环境不同:
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
(2)对安全要求不同
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。
(3)对程序架构不同
C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
(4)软件重用不同
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
(5)系统维护不同
C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
(6)处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
(7)用户接口不同
C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
(8)信息流不同
C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。
7.什么是JNDI
android面试题及答案
android面试题及答案
本文是我精心整理的android面试题及答案,欢迎大家参考。
1. 下列哪些语句关于内存回收的说明是正确的? (b ) A、 程序员必须创建一个线程来释放内存
B、 内存回收程序负责释放无用内存
C、 内存回收程序允许程序员直接释放内存
D、 内存回收程序可以在指定的时间释放内存对象
2. 下面异常是属于Runtime Exception 的是(abcd)(多选) A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、BufferUnderflowException
3. Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12
4. 下列程序段的输出结果是:(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、011.activity
5. 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d) A、onPause() B、onCreate() C、 onResume() D、onStart()
6. Intent传递数据时,下列的数据类型哪些可以被传递(abcd)(多选) A、Serializable B、charsequence C、Parcelable D、Bundle
7. android 中下列属于Intent的作用的是(c) A、实现应用程序间的数据共享
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失
C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带
D、处理一个应用程序整体性的工作
8. 下列属于SAX解析xml文件的优点的是(b) A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能
B、不用事先调入整个文档,占用资源少
C、整个文档调入内存,浪费时间和空间
D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会
消失
9. 下面的对自定style的方式正确的是
A、
B、
C、
fill_parent
D、
fill_parent
10. 在android中使用Menu时可能需要重写的方法有(ac)。(多选) A、onCreateOptionsMenu()
B、onCreateMenu()
C、onOptionsItemSelected()
D、onItemSelected()
11. 在SQL Server Management Studio 中运行下列T-SQL语句,其输出值(c)。 SELECT @@IDENTITY
A、 可能为0.1
B、 可能为3
C、 不可能为-100
D、 肯定为0
12. 在SQL Server 2005中运行如下T-SQL语句,假定SALES表中有多行数据,执行查询之 后的结果是(d)。 BEGIN TRANSACTION A
Update SALES Set qty=30 WHERE qty《30
BEGIN TRANSACTION B
Update SALES Set qty=40 WHEREqty《40
Update SALES Set qty=50 WHEREqty《50
Update SALES Set qty=60 WHEREqty《60
COMMIT TRANSACTION B
COMMIT TRANSACTION A
A、SALES表中qty列最小值大于等于30
B、SALES表中qty列最小值大于等于40
C、SALES表中qty列的数据全部为50
D、SALES表中qty列最小值大于等于60
13. 在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是(ab) A、getWriteableDatabase()
B、getReadableDatabase()
C、getDatabase()
D、getAbleDatabase()
14. android 关于service生命周期的onCreate()和onStart()说法正确的是(ad)(多选题) A、当第一次启动的时候先后调用onCreate()和onStart()方法
B、当第一次启动的时候只会调用onCreate()方法
C、如果service已经启动,将先后调用onCreate()和onStart()方法
D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法
15. 下面是属于GLSurFaceView特性的是(abc)(多选) A、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图
view上。
B、管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
C、让渲染器在独立的线程里运作,和UI线程分离。
D、可以直接从内存或者DMA等硬件接口取得图像数据
16. 下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的
A、
android:name="android.provider.action.NewBroad"/》
B、
android:name="android.provider.action.NewBroad"/》
C、
android:name="android.provider.action.NewBroad"/》
D、
android:name="android.provider.action.NewBroad"/》
17. 关于ContenValues类说法正确的是(a) A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
名是String类型,而值都是基本类型
B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
名是任意类型,而值都是基本类型
C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
名,可以为空,而值都是String类型
D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中
的名是String类型,而值也是String类型
18. 我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(a) A、onDestroy()
B、onClear()
C、onFinish()
D、onStop()
19. 下面退出Activity错误的方法是(c) A、finish()
B、抛异常强制退出
C、System.exit()
D、onStop()
20. 下面属于android的动画分类的有(ab)(多项) A、Tween B、Frame C、Draw D、Animation
21. 下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是(d) A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.
B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念.
C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念.
D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.
22. Android项目工程下面的assets目录的作用是什么bA、放置应用到的图片资源。
B、主要放置多媒体等数据文件
C、放置字符串,颜色,数组等常量数据
D、放置一些与UI相应的布局文件,都是xml文件
23. 关于res/raw目录说法正确的是(a)A、 这里的文件是原封不动的存储到设备上不会转换为二进制的格式
B、这里的’文件是原封不动的存储到设备上会转换为二进制的格式
C、 这里的文件最终以二进制的格式存储到指定的包中
D、这里的文件最终不会以二进制的格式存储到指定的包中
24. 下列对android NDK的理解正确的是(abcd )A、 NDK是一系列工具的集合
B、 NDK 提供了一份稳定、功能有限的 API 头文件声明。
C、 使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式
D、 NDK 将是 Android 平台支持 C 开发的开端
二.文件存储方式
三.SQLite数据库方式
四.内容提供器(Content provider)方式
二、Android面试填空题
25. android中常用的四个布局是framlayout,linenarlayout,relativelayout和tablelayout。26. android 的四大组件是activiey,service,broadcast和contentprovide。27. java.io包中的objectinputstream和objectoutputstream类主要用于对对象(Object)的读写。28. android 中service的实现方法是:startservice和bindservice。29. activity一般会重载7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory() 外还有onrestart,onresume,onpause,onstop。30. android的数据存储的方式sharedpreference,文件,SQlite,contentprovider,网络。31. 当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行 的回调函数是startActivityResult()。32. 请使用命令行的方式创建一个名字为myAvd,sdk版本为2.2,sd卡是在d盘的根目录下,名字为scard.img, 并指定屏幕大小HVGA.____________________________________。33. 程序运行的结果是:_____good and gbc__________。 public classExample{
String str=new String("good");
charch={’a’,’b’,’c’};
public static void main(String args){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
Sytem.out.print(ex.ch);
}
public void change(String str,char ch){
str="test ok";
ch=’g’;
}
}
34. 在android中,请简述jni的调用过程。(8分)1)安装和下载Cygwin,下载 Android NDK
2)在ndk项目中JNI接口的设计
3)使用C/C++实现本地方法
4)JNI生成动态链接库.so文件
5)将动态链接库复制到java工程,在java工程中调用,运行java工程即可
35. 简述Android应用程序结构是哪些?(7分)Android应用程序结构是:
Linux Kernel(Linux内核)、Libraries(系统运行库或者是c/c++核心库)、Application
Framework(开发框架包)、Applications (核心应用程序)
36. 请继承SQLiteOpenHelper实现:(10分) 1).创建一个版本为1的“diaryOpenHelper.db”的数据库,
2).同时创建一个 “diary” 表(包含一个_id主键并自增长,topic字符型100
长度, content字符型1000长度)
3).在数据库版本变化时请删除diary表,并重新创建出diary表。
publicclass DBHelper extends SQLiteOpenHelper{
public final static String DATABASENAME ="diaryOpenHelper.db";
public final static int DATABASEVERSION =1;
//创建数据库
public DBHelper(Context context,Stringname,CursorFactory factory,int version)
{
super(context, name, factory,version);
}
//创建表等机构性文件
public void onCreate(SQLiteDatabase db)
{
String sql ="create tablediary"+
"("+
"_idinteger primary key autoincrement,"+
"topicvar100),"+
"contentvar1000)"+
")";
db.execSQL(sql);
}
//若数据库版本有更新,则调用此方法
public void onUpgrade(SQLiteDatabasedb,int oldVersion,int newVersion)
{
String sql = " ifexists diary";
db.execSQL(sql);
this.onCreate(db);
}
}
37. 页面上现有ProgressBar控件progressBar,请用书写线程以10秒的的时间完成其进度显示工作。(10分)答案
publicclass ProgressBarStu extends Activity {
private ProgressBar progressBar = null;
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progressbar);
//从这到下是关键
progressBar = (ProgressBar)findViewById(R.id.progressBar);
Thread thread = new Thread(newRunnable() {
@Override
public void run() {
int progressBarMax =progressBar.getMax();
try {
while(progressBarMax!=progressBar.getProgress())
{
intstepProgress = progressBarMax/10;
intcurrentprogress = progressBar.getProgress();
progressBar.setProgress(currentprogress+stepProgress);
Thread.sleep(1000);
}
} catch(InterruptedException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
}
});
thread.start();
//关键结束
}
}
38. 请描述下Activity的生命周期。 必调用的三个方法:onCreate() --》 onStart() --》 onResume(),用AAA表示
(1)父Activity启动子Activity,子Actvity退出,父Activity调用顺序如下
AAA --》 onFreeze() --》 onPause() --》 onStop() --》 onRestart()--》 onStart(),onResume() …
(2)用户点击Home,Actvity调用顺序如下
AAA --》 onFreeze() --》 onPause() --》 onStop() -- Maybe --》onDestroy() – Maybe
(3)调用finish(), Activity调用顺序如下
AAA --》 onPause() --》 onStop() --》 onDestroy()
(4)在Activity上显示dialog,Activity调用顺序如下
AAA
(5)在父Activity上显示透明的或非全屏的activity,Activity调用顺序如下
AAA --》 onFreeze() --》 onPause()
(6)设备进入睡眠状态,Activity调用顺序如下
AAA --》 onFreeze() --》 onPause()
39. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? onSaveInstanceState()
当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
40. 如何将一个Activity设置成窗口的样式。 在AndroidManifest.xml 中定义Activity的地方一句话android:theme="@android:style/Theme.Dialog"或android:theme="@android:style/Theme.Translucent"就变成半透明的
41. 如何退出Activity?如何安全退出已调用多个Activity的Application?对于单一Activity的应用来说,退出很简单,直接finish()即可。
当然,也可以用killProcess()和System.exit()这样的方法。
但是,对于多Activity的应用来说,在打开多个Activity后,如果想在最后打开的Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。
当然,网上也有人说可以。
就好像有人问,在应用里如何捕获Home键,有人就会说用keyCode比较KEYCODE_HOME即可,而事实上如果不修改framework,根本不可能做到这一点一样。
所以,最好还是自己亲自试一下。
那么,有没有办法直接退出整个应用呢?
在2.1之前,可以使用ActivityManager的restartPackage方法。
它可以直接结束整个应用。在使用时需要权限android.permission.RESTART_PACKAGES。
注意不要被它的名字迷惑。
可是,在2.2,这个方法失效了。
在2.2添加了一个新的方法,killBackgroundProcesses(),需要权限android.permission.KILL_BACKGROUND_PROCESSES。
可惜的是,它和2.2的restartPackage一样,根本起不到应有的效果。
另外还有一个方法,就是系统自带的应用程序管理里,强制结束程序的方法,forceStopPackage()。
它需要权限android.permission.FORCE_STOP_PACKAGES。
并且需要添加android:sharedUserId="android.uid.system"属性
同样可惜的是,该方法是非公开的,他只能运行在系统进程,第三方程序无法调用。
因为需要在Android.mk中添加LOCAL_CERTIFICATE := platform。
而Android.mk是用于在Android源码下编译程序用的。
从以上可以看出,在2.2,没有办法直接结束一个应用,而只能用自己的办法间接办到。
现提供几个方法,供参考:
1、抛异常强制退出:
该方法通过抛异常,使程序ForceClose。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
2、记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4、递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
除了第一个,都是想办法把每一个Activity都结束掉,间接达到目的。
但是这样做同样不完美。
你会发现,如果自己的应用程序对每一个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。
但至少,我们的目的达到了,而且没有影响用户使用。
为了编程方便,最好定义一个Activity基类,处理这些共通问题。
42. 请介绍下Android中常用的五种布局。FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)
c++经典面试题及答案
1. C++的类和C里面的struct有什么区别?
struct成员默认访问权限为public,而class成员默认访问权限为private
2. 析构函数和虚函数的用法和作用
析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。
虚函数是指被关键字virtual说明的函数,作用是使用C++语言的多态特性
3. 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
1) 全局变量的作用用这个程序块,而局部变量作用于当前函数
2) 前者在内存中分配在全局数据区,后者分配在栈区
3) 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在
4) 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用
4. 有N个大小不等的自然数(1–N),请将它们由小到大排序.要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
void sort(int e, int n)
{
int i;
int t;
for (i=1; i {
t = e;
e;
e = t;
}
}
5. 堆与栈的去区别
A. 申请方式不同
Stack由系统自动分配,而heap需要程序员自己申请,并指明大小。
B. 申请后系统的响应不同
Stack:只要栈的剩余空间大于申请空间,系统就为程序提供内存,否则将抛出栈溢出异常
Heap:当系统收到程序申请时,先遍历操作系统中记录空闲内存地址的链表,寻找第一个大于所申请空间的堆结点,然后将该结点从空间结点链表中删 除,并将该结点的空间分配给程序。另外,大多数系统还会在这块内存空间中的首地址处记录本次分配的大小,以便于delete语句正确释放空间。而且,由于 找到的堆结点的大小不一定正好等于申请的大小,系统会自动将多余的那部分重新放入空闲链表。
C. 申请大小限制的不同
Stack:在windows下,栈的大小是2M(也可能是1M它是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
Heap:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
D. 申请效率的比较:
栈由系统自动分配,速度较快。但程序员是无法控制的。
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。
另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是直接在进程的地址空间中保留一快内存,虽然用起来最不方便。但是速度快,也最灵活。
E. 堆和栈中的存储内容
栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器 中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开 始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。
堆:一般是在堆的.头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。
6. 含参数的宏与函数的优缺点
宏: 优点:在预处理阶段完成,不占用编译时间,同时,省去了函数调用的开销,运行效率高
缺点:不进行类型检查,多次宏替换会导致代码体积变大,而且由于宏本质上是字符串替换,故可能会由于一些参数的副作用导致得出错误的结果。
函数: 优点:没有带参数宏可能导致的副作用,进行类型检查,计算的正确性更有保证。
缺点:函数调用需要参数、返回地址等的入栈、出栈开销,效率没有带参数宏高
PS:宏与内联函数的区别
内联函数和宏都是在程序出现的地方展开,内联函数不是通过函数调用实现的,是在调用该函数的程序处将它展开(在编译期间完成的);宏同样是;
不同的是:内联函数可以在编译期间完成诸如类型检测,语句是否正确等编译功能;宏就不具有这样的功能,而且宏展开的时间和内联函数也是不同的(在运行期间展开)
7. Windows程序的入口是哪里?写出Windows消息机制的流程
Windows程序的入口是WinMain()函数。
Windows应用程序消息处理机制:
A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中
B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。
C. 应用程序调用DispatchMessage,将消息回传给操作系统。
D. 系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理。
8. 如何定义和实现一个类的成员函数为回调函数
A.什么是回调函数?
简而言之,回调函数就是被调用者回头调用调用者的函数。
使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个被调用函数。而该被调用函数在需要的时候,利用传递的地址调用回调函数。
回调函数,就是由你自己写的,你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。
B.如何定义和实现一个类的成员函数为回调函数
要定义和实现一个类的成员函数为回调函数需要做三件事:
a.声明;
b.定义;
c.设置触发条件,就是在你的函数中把你的回调函数名作为一个参数,以便系统调用
如:
一、声明回调函数类型
typedef void (*FunPtr)(void);
二、定义回调函数
class A
{
public:
A();
static void callBackFun(void) //回调函数,必须声明为static
{
cout《《"callBackFun"《
}
virtual ~A();
};
三、设置触发条件
void Funtype(FunPtr p)
{
p();
}
void main(void)
{
Funtype(A::callBackFun);
}
C. 回调函数与API函数
回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反, 他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它 通过一个函数指针来保存这个回调函数,在需要调用时,只需引用这个函数指针和相关的参数指针。
其实:回调就是该函数写在高层,低层通过一个函数指针保存这个函数,在某个事件的触发下,低层通过该函数指针调用高层那个函数。
plc面试基础知识及经验分享
plc面试基础知识试题:
一、判断题:(每题1分,满分20分。):
1、欧姆龙公司的CPM1A-40CDR型PLC的手持编程器CQM1-PRO01上CLR键是用于清除输入的程序。(B)
A、对B、错
2、可编程控制器易学好懂易用,但是抗干扰能力差,使其应用受到限制。(B)
A、对B、错
3、TCMP指令和BCMP指令的功能相同。(B)
A、对B、错
4、在同一段程序中,既可用TIM000来定时,又可用CNT000来计数,二者不会发生冲突。(B)
A、对B、错
5、功能表图中并行路径分支与合并用单横线表示。(B)
A、对B、错
6、PLC的编程语言是面向模块的。(B)
A、对B、错
7、变频器的调节方法中模拟面板调速和模拟旋钮调速两种方式非常适于PLC控制变频器速度调控。(B)
A、对B、错
8、欧姆龙公司的CPM1A为整体式小型PLC。(A)
A、对B、错
9、移位寄存器指令SFT执行后,ST通道的最低位丢失。(B)
A、对B、错
10、PLC运行程序时,其输入输出存在滞后现象。(A)
A、对B、错
11、顺序控制中选择结构和并列结构一样,都有开始和结束两部分构成。(A)
A、对B、错
12、各个PLC生产厂家的编程语言是通用的。(B)
A、对B、错
13、PLC的输入继电器只能由程序来驱动。(B)
A、对B、错
14、PLC的I/O点数是指PLC上输入、输出接线柱的数量。(B)
A、对B、错
15、TCMP指令中T~T+15字可以不在同一数据区中。(B)
A、对B、错
16、KEEP指令的操作数可以是特殊功能继电器。(B)
A、对B、错
17、使用低速定时器一次定时时间受限制,而使用高速定时器则不受这种限制。(B)
A、对B、错
18、接近传感器与接触式传感器不同,它会受周围温度、周围物体的影响。(A)
A、对B、错
19、大型PLC的I/O点数一般在1024点以上。(B)
A、对B、错
20、MOV指令和@MOV指令功能相同,但执行条件不同。(A)
A、对B、错
21、B22、B23、B24、C25、A26、A27、A28、C29、C30、A
31、C32、A33、B34、B35、B36、A37、A38、B39、B40、A
41、B42、B43、C44、C45、B46、A47、B48、C49、B50、C
二、选择题:(21~50题。请将适当的词语填入划线处。每空1.0分。满分30分):
21、下列不属于时序控制指令的是(B)。
A、JMPB、LDC、ENDD、JPE
22、步指令以串行方式编程时,执行类型不包括(B)。
A、顺序B、单行C、并行
23、LD是(B)指令。
A、输出B、读C、逻辑与D、逻辑或
24、OUT指令是线圈的驱动指令,它不能用于(C)。
A、输出继电器B、辅助继电器C、输入继电器D、保持继电器
25、工业中控制电压一般是(A)伏。
A、24VB、36VC、220V
26、CPM1A机型中的普通定时器的定时范围为(A)。
A、0-999.9sB、0-99.9sC、0-9999.9sD、6553.5s
27、1个字包含(A)位。
A、16B、8C、4D、1
28、定时器TIM的参数SV的设定值不可以为(C)。
A、HRB、IRC、SR
29、CPM1A机型中的计数器的计数范围为(C)。
A、0--255B、0--999C、0--9999D、0-65535
30、STC是(A)指令。
A、置位进借位标志指令B、置位借位标志指令C、置位进位标志指令
31、PLC在输出扫描阶段,将(C)寄存器中的内容复制到输出线端子上。
A、输入映象B、内部存储器C、输出映象
32、增量指令的梯形图助记符是(A)。
A、INCB、ADDC、DEC
33、若KEEP的操作数为HR,在电源中断期间该位的状态(B)。
A、清0B、保持不变C、置1D、复位
34、OMRON可编程控制器中的通道即(B)。
A、字节B、字C、位D、双字
35、CPM1A机型中(B)是常ON继电器。
A、25502B、25313C、25407D、25503
36、XFER是(A)指令。
A、块传送B、数据交换C、多通道设置
37、OMRON系列PLC中,继电器25502,提供周期(A)s的方波信号。
A、1B、.1C、.5
38、第一台PLC是由以下哪个公司研制成功的?(B)
A、GE公司B、DEC公司C、ABB公司D、OMRON公司
39、步指令中,每一步的执行必须先由(B)的控制位做先导。
A、STEPB、SNXTC、SET
40、当数码管采用共阴极连接时,显示0时,二进制表示形式为(A)。
A、OO111111BB、OO1O1111BC、1O1111O1BD、null
41、PLC的输出接口中,仅能驱动交流负载的是:(B)
A、晶体管输出接口B、双向晶闸管输出接口
C、继电器输出接口D、达林顿管输出接口
42、顺序功能图中的用(B)来表示状态进行的方向。
A、双横线B、有向线段C、双线框D、单线框
43、IR表示(C)。
A、输入继电器B、输出继电器C、内部继电器D、链接继电器
44、下列概念(C)不属于顺序功能图概念。
A、工步B、转换条件C、跳转指令D、当前步
45、TR表示(B)。
A、输入继电器B、暂存继电器C、内部继电器D、链接继电器
46、CNT为(A)计数器。
A、递减B、递增C、加减D、null
47、实数开方指令的梯形图助记符是(B)。
A、MULB、ROOTC、DIVD、null
48、PLC容量不包括(C)方面。
A、I/O点数B、用户存储容量C、内部继电器数目D、
49、两个触点并联的电路称为(B)。
A、串联电路块B、并联电路块C、逻辑块与D、逻辑块或
50、下面哪个不是PLC常用的分类方式?(C)
A、I/O点数B、结构形式C、PLC体积D、功能
Plc工程师面试经验分享:
安徽巨一自动化装备有限公司-PLC工程师
面试时间:2017面试职位:PLC工程师分享时间:2017-06
面试经历:
本人先在网上投简历,HR电话询问以前工作情况以及为什么离职。然后约个时间到公司面试。正式面试时,首先是PLC工程师及人事经理共同面试,PLC工程师主要是问一些技术问题,比如会使用哪些品牌工控产品,对于具体产品再问一个具体问题。人事经理就是问为什么离职,能适应长期出差么。最后是一个部长单独面试,主要聊一些公司工作具体工作,再问问能否适应。最后人事经理通知回家等消息。两天后通知,公司经过讨论一致认为可以录取本人。一年平均出差270天,尽量每月让职工回家休息3至5天。基本工资5.5k,出差饭补每天100,周末加班每天200,住宿凭发票报销。年终奖是一个月工资。
面试官提的问题:
能否适应长期出差。为什么从上一家公司离职。会使用哪些PLC,会使用哪些触摸屏,会使用哪些通信。
安徽巨一自动化装备有限公司-PLC工程师
面试时间:2017面试职位:PLC工程师分享时间:2017-06
面试经历:
本人先在网上投简历,HR电话询问以前工作情况以及为什么离职。然后约个时间到公司面试。正式面试时,首先是PLC工程师及人事经理共同面试,PLC工程师主要是问一些技术问题,比如会使用哪些品牌工控产品,对于具体产品再问一个具体问题。人事经理就是问为什么离职,能适应长期出差么。最后是一个部长单独面试,主要聊一些公司工作具体工作,再问问能否适应。最后人事经理通知回家等消息。两天后通知,公司经过讨论一致认为可以录取本人。一年平均出差270天,尽量每月让职工回家休息3至5天。基本工资5.5k,出差饭补每天100,周末加班每天200,住宿凭发票报销。年终奖是一个月工资。
面试官提的问题:
能否适应长期出差。为什么从上一家公司离职。会使用哪些PLC,会使用哪些触摸屏,会使用哪些通信。
plc面试基础问答题:
一、综述
一台安全PLC采用了特殊的设计,能够实现两个重要目标:
1.系统不会失效(采用冗余的工作方式),即使元件的失效不可避免;
2.失效是在可预测的范围内,一旦失效,系统将进入安全模式。
在设计安全PLC时,要考虑到很多因素,需要很多的特殊设计。比如:一台安全PLC更强调内部诊断,结合硬件和软件,可以让设备随时检测自身工作状态的不适;一台安全PLC具有的软件,要使用一系列的特殊技术,能确保软件的可靠性;一台安全PLC具有冗余功能,即使一部分失效,也能够维持系统运行;一台安全PLC还具有外加的安全机制,不允许通过数字通信接口随便读写内部的数据。
安全PLC与常规PLC的不同还在于:安全PLC需要得到第三方专业机构的安全认证,满足苛刻的安全性和可靠性国际标准。必须彻底地采用系统方法,来设计和测试安全PLC。德国的TUV专家和美国的FM专家会提供对安全PLC设计和测试过程的、第三方独立的确认和验证,
特殊的电子线路,细致的诊断软件分析,再加上对所有可能失效进行测试的完整性设计,确保了安全PLC具有测定99%以上的内部元件潜在危险失效的能力。一种失效模式、影响和诊断分析(FMEDA)方法一直指导着设计,这种方法会指出每个元件是怎样引起系统失效,并且告诉你系统应该如何检测这个失效。TUV的工程师会亲自执行失效测试,把它作为他们认证过程的一个部分。
严格的国际标准软件应用于安全PLC。这些标准需要特殊技术,避免复杂性。更进一步的分析和测试,细致地检查操作系统的任务交互操作。这种测试包括实时的交互操作,比如多任务(当使用时)和中断。还需要进行一种特殊的诊断,被称为"程序流控制"和"数据确认"。程序流检查能确保基本功能能按正确的顺序执行,数据确认使所有的关键数据在存储器里进行冗余存储,并且在使用前进行有效性测试。在软件开发过程中,一个安全PLC需要附加的软件测试技术。为了核实数据完整性检查,必执行一系列"软件失效注入"测试,也就是人为对程序进行故意破坏,来检查PLC的响应是否运行在预计的安全方式。软件的设计和测试带有详细的文件资料,这样第三方的检查员就能够明白PLC的运行原理,而多数软件开发没有使用这种规范的操作流程,这也正好说明为什么众多的垃圾软件会出现那么多的臭虫而无法发现了。
二、举例
下面试通过施耐德电气公司的一款安全PLC,来更具体地说明安全PLC与常规PLC的区别。
2.1安全PLC与常规PLC的CPU的差别
常规PLC内部CPU的数量有一个或多个,它或它们的作用是:执行用户的程序、进行I/O的扫描和系统的诊断。但用户的程序通常就进行一次处理,多个CPU的功能是把程序中的`逻辑运算、算数运算、通信功能等分担实现,也就是协作处理。
而安全PLC的CPU至少有两个或多个,两个CPU的功能是:分别对同一个用户程序各自执行一次,然后再把两个结果放在一起进行比较,如果比较的结果是一致的,就输出这个结果,如果是不一致的,选择安全的结果输出。由此看出,这才是安全PLC与常规PLC最大的不同:冗余+比较。
2.2安全PLC内部CPU的结构
安全PLC包含2个处理器,每个处理器在自己的存储器区中,执行它们自己的安全逻辑,然后在每个周期的结尾和对方的结果进行比较,每个处理器有它自己独立的停机通道,如果检测到结果的不同或有失效成分,它能够实现系统停机,切到安全状态。这种双处理结构被称为内部的二选一结构。
plc面试基础知识题
多项选择题
1、可编程控器一般采用的编程语言有(A、B、C、D)
(A)梯形图(B)语句表(C)功能图编程(D)高级编程语言
2、可编程控器中存储器有(A、B)
(A)系统程序存储器(B)用户程序存储器(C)备用存储器(D)读写存储器
3、PLC机在循环扫描工作中每一扫描周期的工作阶段是(A、C、D)
(A)输入采样阶段(B)程序监控阶段(C)程序执行阶段(D)输出刷新阶段
4、状态转移的组成部分是(A、B、C、E)
(A)初始步(B)中间工作步(C)终止工作步(D)有向连线(E)转换和转换条件
5、状态转移图的基本结构有(B、D、E)
(A)语句表(B)单流程(C)步进梯形图(D)选择性和并行性流程(E)跳转与循环流程
6、在PLC的顺序控制中采用步进指令方式变成有何优点(A、B)
(A)方法简单、规律性强(B)提高编程工作效率、修改程序方便(C)程序不能修改(D)功能性强、专用指令多
简答题
1、LC有哪些特点?
答:PLC有如下特点:①可靠性高,抗干扰能力强;②配套齐全,功能完善,适用性强;③易学易用,深受工程技术人员欢迎;④系统的设计,建造工作量小,维护方便,改造容易;⑤体积小,重量轻,能耗低。
2、LC机与继电器控制系统之间有哪些差异?
答:PLC机实际上是计算机,它各种元器件之间的逻辑关系是通过程序来表达的,改变逻辑关系只要改变程序,而继电控制系统上各种电器元件,用导线依一定的规律将它们连接起来,接线表达了各元器件间的逻辑关系,要改变这种关系只能改变接线。PLC机是串行工作方式;继电器控制系统是并行工作方式。
3、可编程序控制器的硬件及其结构?
答:PLC采用了典型的计算机结构,主要包括CPU、RAM、ROM、输入输出接口电路、电源单元及编程器和外围设备。
4、梯形图编程方式有几种?
答:
1、按逻辑指令梯形图方式编程;
2、按步进指令梯形图方式编程。
5、可编程序控制器的工作原理。(P460/简答1)
答:可编程序控制器采用的是循环扫描工作方式,采用集中采样、集中输出。其工作过程可分为五个阶段:内部处理、通讯操作、输入处理、程序执行和输出处理。
7、简述可编程序控制器梯形图基本结构的组成。
答:三菱FX系例可编程序控制器梯形图的基本结构由左、右母线,各类触点符号、各类线圈符号、文字符号和表示能流的连线、节点组成。
8、简述节点和梯级的含义?
答:节点是触点的逻辑关系表示;梯级则是表示一段逻辑关系的刷新或输出。
9、简述可编程序控制器的编程技巧。
答:编程技巧并无一定章法可循,只能在编程的过程中积累,首先应能熟练运用机内元器件和常见的基本环节,如定时计时环节、振荡环节、分频环节等,在编程过程中,有个串联回路并联,应将触点最多的那个回路放在最前面;有几个并联回路串联,应将触点最多的那个回路放在最左面,这样能使程序简洁明白,语句较少.在编程的过程中遇到不可编程电路必须重新安排,以便正确应用PLC指令进行编程。
10、RST指令在实际使用中应注意哪些方法?
答:RST指令一般与SET指令配合使用,对同一元件,SET、RST指令可多次使用,而且不限制使用顺序,但最后执行者有效。RST指令还可用于积算定时器、计数器、数据寄存器、变址寄存器等的复位、当前值清零。
11、什么情况下允许双线圈输出?
答:同一程序的两个绝不会同时执行的程序段中可以有相同的输出线圈。在步进指令程序中,不同时“激活”的双线圈是允许的;在子程序调用程序中也容许双线圈输出。
12、PLC的程序设计分为哪些步骤?(P460/简答5)
答:程序设计应先详细了解被控对象的工艺要求,明确PLC完成任务应具有的功能,确定程序的总体结构,绘出控制系统的工作循环图或状态流程图,以明确或选取程序结构,列出I/O表和机内元件的选用安排表,可使用梯形图或指令表法完成程序设计,输入到PLC机内进行调试修改。
13、可编程序控制器的选型。
答:可编程序控制器选型的基本原则是在满足控制功能要求的前提下,保证系统可靠、安全、经济及使用维护方便,主要应考虑CPU能力、I/O点数、响应速度、指令功能等几个性能指标是否满足需要。
14、选购PLC机应考虑哪些因素?
答:PLC机应根据工艺流程特点、控制要求及现场所需要信号的数量和类型进行选购,一般应考虑如下几个方面:PLC的功能、输入输出点数、对PLC响应时间的要求、程序存储器容量的估算、系统可靠性及编程器与外围设备。
15、可编程序控制器的安装与维护及应用中的注意事项。
答:可编程序控制器的安装与维护及应用中应注意以下事项:在安装中应注意设置安全线路、适合可编程序控制器的运行环境和正确的配线;维护时应注意运行前后的各项检查,一旦发现异常,应正确处理;还应注意锂电池的使用寿命,当“BATT。V”LED亮灯后,应立即按正确步骤更换电池,防止锂电池失效后程序丢失。
16、对PLC接地有何要求?
答:PLC应有专用接地线,接地线的截面积应不小于2mm2,接地电阻小于100Ω,禁止与其它设备串联接地,并尽量靠近PLC。
17、PLC机的日常维护工作主要包括哪些方面?
答:应该包括以下几个方面:①日常清洁和巡查、②定期检查和维修、③编程软件的使用方法及应用、④锂电池的更换。18、简述便携式编程器的编程操作步骤。答:①操作准备、②原有的程序清除、③程序的输入、④程序的读出检查、⑤程序的插入和修改、⑥程序的监视和测试。
19、估算可编程序控制器内存应考虑哪些因素?
答:用户程序所需存储器容量可以预先估算。对开关量控制系统,用户程序所需存储器的字数等于输入/输出信号总数乘以8;对于有模拟量输入/输出的系统,每一路模拟量信号大约需要100字的存储量.
20、可编程序控制器有哪些内部资源?(P460/简答题2)
答:PLC机内部均为无触点电子电路,为了便于编程,按其功能等效为各类电气元件,有输入继电器、中间继电器、定时器、计数器、输出继电器及其他一些特殊继电器等。
21、PLC的输出元件有哪几种类型?它们的主要区别是什么?
答:PLC的输出元件有继电器、晶体管、双向晶闸管三种类型,它们的主要区别是速度不同,输出容量不一,使用的电源性质有区别。
22、为什么PLC的触点可以使用无数次?(P460/简答3)
答:PLC中的编程元件只是与继电器的元件类似,实际上是存储单元,某个元件的状态发生变化,只是表示这个元件的存储单元系统置1或置0,由于元件只不过是存储单元,可以无数次地访问,故PLC的编程元件的触点,可以使用无数次。
23、什么是指令?什么是程序?程序设计语言有哪几类?
答:指令是计算机每完成一个基本操作所需的控制信息,程序是计算机完成一个完整任务的一连串指令。PLC的编程语言有:梯形图编程语言、指令语句表编程语言、功能块图编程语言、高级语言。
24、简述PLC梯形图“能流”的概念。
答:PLC梯形图是从继电器电路图演变过来的,使用了类似继电器电路图的符号,PLC梯形图的结构和继电器电路十分相似,故用母线代替电源线,用能量流(能流)概念来代替继电器电路中的电流概念。
25、简述FX2系列PLC的主要元器件及其编号。
答:输入继电器X0~X177、输出继电器Y0~Y177、辅助继电器M0~M499、特殊辅助继电器M8000~M8255、定时器T0~T255、计数器C0~C199等。26、PLC机内部有哪些等效元件?答:PLC机内部有许多具有不同功能的器件,实际上这些器件是由电子电路和存储器组成的。为了把它们与通常的硬器件分开,称之为软器件或等效元件,有X、Y、T、C、M、S、D、V/Z等等效元件
linux认证的面试题及答案
linux认证的面试题及答案
Linux认证指获得专业Linux培训后通过考试得到的资格。国际上广泛承认的Linux认证有LinuxProfessionalInstitute(简称为LPI)、SairLinux和GNU、Linux+和RedHatCertifiedEngineer。不过,想要考取这个证书也不是容易的事情,本次我我大家带来了linux认证面试题及答案希望能够帮助道大家。
一、填空题:
1. 在Linux系统中,以 文件 方式访问设备 。
2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。
3. Linux文件系统中每个文件用 i节点 来标识。
4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。
5. 链接分为: 硬链接 和 符号链接 。
6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息。
7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 。
8. 前台起动的进程使用 Ctrl+c 终止。
9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。
10. 网络管理的重要任务是: 控制 和 监控 。
11. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。
13. 编写的Shell程序运行前必须赋予该脚本文件 执行 权限。
14. 系统管理的任务之一是能够在 分布式 环境中实现对程序和数据的安全保护、备份、恢复和更新。
15. 系统交换分区是作为系统 虚拟存储器 的一块区域。
16. 内核分为 进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 等四个子系统。
17. 内核配置是系统管理员在改变系统配置 硬件 时要进行的重要操作。
18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、 网关地址 和
子网掩码 等必要信息。
19. 唯一标识每一个用户的是用户 ID 和用户名。
20 . RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。
21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为 文件系统 。
22. DHCP可以实现动态 IP 地址分配。
23. 系统网络管理员的管理对象是服务器、 用户 和服务器的进程 以及系统的各种资源。
24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。
25. 当想删除本系统用不上的 设备驱动程序 时必须编译内核,当内核不支持系统上的 设备驱动程序 时,必须对内核 升级 。
26 Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 。
27. vi器具有两种工作模式: 命令模式 和 输入模式 。
28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示 文件类型 ,第二段占3位,表示 文
件所有者 对该文件的权限。
29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态 、 就绪态 和 等待态(阻塞态) 。
30. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现 IP地址和主机名 之间的转换。
31. Apache是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端 为用户提供浏览 web服务 的就是apache应用程序。
32. 在Linux系统上做备份可以有两种类型:系统备份 和 用户备份 。其中前者是指对 操作系统 的备份,后者是指对 应用程序和用户文件的备份。
33. CD-ROM标准的文件系统类型是 iso9660 。
34. 当lilo.conf配置完毕后,使之生效,应运行的命令及参数是 lilo 。
35. 在使用ls命令时,用八进制形式显示非打印字符应使用参数 -b 。
36. Linux使用支持Windows 9.x/2000长文件名的文件系统的类型是 vfat 。
37. 设定限制用户使用磁盘空间的命令是 quota 。
38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc 。
39. 硬连接只能建立对 文件 链接。符号链接可以跨不同文件系统创建。
40. 套接字文件的属性位是 s 。
41. 结束后台进程的命令是 kill 。
42. 进程的运行有两种方式,即 独立运行和使用父进程运行 。
43. Links分为 硬链接和符号链接 。
44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。
45. 管道文件的属性位是 p 。
46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 。
47. 为脚本程序指定执行权的命令及参数是 chmod a+x filename 。
48. 进行远程登录的命令是 telnet 。
49. 欲发送10个分组报文测试与主机abc.tuu.edu.cn的连通性,应使用的命令和参数是: ping abc.tuu.edu.cn –c 10 。
50. DNS服务器的进程命名为named,当其启动时,自动装载 /etc目录下的 named.conf 文件中定义的DNS分区数据库文件。
***隐藏网址***
52.在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。
53. 在用vi文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt 。
54 可以在标准输出上显示整年日历的命令及参数是 cal -y 。
55. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有 空格 。
56. 检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是 fsck –a /dev/had5 。
57. 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器 。
58. 系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和 系统性能监测 。
59 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。
60. 在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为 hdb 。
61. 当系统管理员需升级内核版本和改变系统硬件配置时,应 重新编译内核 。
62. 如果只是要修改系统的IP地址,应修改 /etc/rc.d/rc.inet1 配置文件。
63. 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置 /etc/hosts 文件。
64. 在vi环境下,使用 Esc键 进行模式转换。
65. Slackware Linux 9.0通常使用 ext3 文件系统,系统的全部磁盘块由 四 部分组成。
66. 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 tar zcvf
/home/wang.tar.gz /home/stud1/wang 。
67. 管道就是将前一个命令的 标准输出 作为后一个命令的 标准输入 。
68. 在使用手工的方法配置网络时,可通过修改 /etc/HOSTNAME 文件来改变主机名,若要配置该计算机的域名解析客户端,需配置 /etc/resolv.conf
文件。
69. 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch 和 crontab 。
70. test.bns.com.cn的域名是 bns.com.cn ,如果要配置一域名服务器,应在 named.conf 文件中定义DNS数据库的工作目录。
71. Sendmail邮件系统使用的两个主要协议是: SMTP 和 POP ,前者用来发送邮件,后者用来接收邮件。
72. DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址 。
73. 目前代理服务器使用的软件包有很多种,教材中使用的是 squid 。
74. rm命令可删除文件或目录,其主要差别就是是否使用递归开关 -r或-R 。
75. mv 命令可以移动文件和目录,还可以为文件和目录重新命名。
76. 路由选择协议(RIP)的跳数表示到达目的地之前必须通过的 网关 数,RIP接受的最长距离是 15跳 。
77. ping命令用于测试网络的连通性,ping命令通过 ICMP 协议来实现。
78. nfs 协议用于实现Unix(/linux)主机之间的文件系统共享。
79. 在Linux操作系统中,设备都是通过特殊的 文件 来访问。
80. shell不仅是 用户命令的解释器 ,它同时也是一种功能强大的编程语言。 bash是Linux的缺省shell。
81. 用 》;》; 符号将输出重定向内容附加在原文的后面。
82. 增加一个用户的命令是:adduser 或useradd 。
83 进行字符串查找,使用grep命令。
84. 使用 * 每次匹配若干个字符。
85. /sbin 目录用来存放系统管理员使用的管理程序。
二、单项选择题:
1. 下面的网络协议中,面向连接的的协议是: A 。
A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议
2. 在/etc/fstab文件中指定的文件系统加载参数中, D 参数一般用于CD-ROM等移动设备。
A defaults B sw C rw和ro D noauto
3. Linux文件权限一共10位长度,分成四段,第三段表示的内容是 C 。
A 文件类型 B 文件所有者的权限
C 文件所有者所在组的权限 D 其他用户的权限
4. 终止一个前台进程可能用到的命令和操作 B 。
A kill B ;+C C shut down D halt
5.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 D 。
A -m B -d C -f D -p
6. 下面关于i节点描述错误的是 A 。
A i节点和文件是一一对应的
B i节点能描述文件占用的块数
C i节点描述了文件大小和指向数据块的指针
D 通过i节点实现文件的逻辑结构和物理结构的转换
7. 一个文件名字为rr.Z,可以用来解压缩的命令是: D 。
A tar B gzip C compress D uncompress
8. 具有很多C语言的功能,又称过滤器的是 C 。
A csh
B tcsh
C awk
D sed
9. 一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 C 。
A 配置域名服务器
B 定义一条本机指向所在网络的路由
C 定义一条本机指向所在网络网关的路由
D 定义一条本机指向目标网络网关的路由
10. 建立动态路由需要用到的文件有 D 。
A /etc/hosts B /etc/HOSTNAME C /etc/resolv.conf D /etc/gateways
11. 局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置
正确的是 B 。
A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1
C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
D route add default 192.168.1.0 netmask 172.168.1.1 metric 1
12. 下列提法中,不属于ifconfig命令作用范围的是 D 。
A 配置本地回环地址 B 配置网卡的IP地址
C 激活网络适配器 D 加载网卡到内核中
13. 下列关于链接描述,错误的是 B 。
A 硬链接就是让链接文件的i节点号指向被链接文件的i节点
B 硬链接和符号连接都是产生一个新的i节点
C 链接分为硬链接和符号链接 D 硬连接不能链接目录文件
14. 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是 C。
运维必须掌握的Linux面试题
1、解释下什么是GPL,GNU,自由软件?
GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。
GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。
自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。
2、linux系统里,buffer和cache如何区分?
buffer和cache都是内存中的一块区域,
当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,
然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;
当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,
可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。
3、描述Linux运行级别0-6的各自含义
0:关机模式
1:单用户模式《==破解root密码
2:无网络支持的多用户模式
3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
4:保留,未使用
5:有网络支持的X-windows支持多用户模式(桌面)
6: 重新引导系统,即重启
4、描述Linux系统从开机到登陆界面的启动过程
⑴开机BIOS自检,加载硬盘。
⑵读取MBR,MBR引导。
⑶grub引导菜单(Boot Loader)。
⑷加载内核kernel。
⑸启动init进程,依据inittab文件设定运行级别
⑹init进程,执行rc.sysinit文件。
⑺启动内核模块,执行不同级别的脚本程序。
⑻执行/etc/rc.d/rc.local
⑼启动mingetty,进入系统登陆界面。
5、描述Linux下软链接和硬链接的区别
在Linux系统中,链接分为两种,一种是硬链接(Hard link),另一种称为符号链接或软链接(Symbolic Link)。
①默认不带参数的情况下,ln创建的是硬链接,带-s参数的ln命令创建的是软链接。
②硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号,与源文件不同,
③ln命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。
④删除软链接文件,对源文件和硬链接文件无任何影响。
⑤删除文件的硬链接文件,对源文件及软链接文件无任何影响。
⑥删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。
⑦同时删除源文件及其硬链接文件,整个文件才会被真正的删除。
⑧很多硬件设备的快照功能,使用的就是类似硬链接的原理。
⑨软链接可以跨文件系统,硬链接不可以跨文件系统。
6、shell脚本中“$?”标记的用途是什么?
在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“ ?
0
如果结束状态是0,说明前一个命令执行成功。
root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~# echo $?
2
如果结束状态不是0,说明命令执行失败。
7、如何让history命令显示具体时间?
$ HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"
$ export HISTTIMEFORMAT
重新开机后会还原,可以写/etc/profile
8、用shell统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前10位的IP数。以下是nginx的访问日志节选
202.101.129.218- - "GET /online/stat_inst.php?pid=d065HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"
1}’ access.log |sort|uniq -c |head -n 10
31 202.101.129.218
21 123.93.29.11
11 13.92.19.31
9、将本地的80端口的请求转发到8080端口,本机地址10.0.0.254,写出命令
$ iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dprot 80 -j DNAT --to-destination 10.0.0.254:8080
10、Load过高的可能性有哪些?
排查思路:
其他经验:
cpu load的飙升,一方面可能和full gc的次数增大有关,一方面可能和死循环有关
11、描述/etc/fstab 文件中每个字段的含义?
(1)第一列:将被加载的文件系统名;
(2)第二列:该文件系统的安装点;
(3)第三列:文件系统的类型;
(4)第四列:设置参数;
(5)第五列:供备份程序确定上次备份距现在的天数;
(6)第六列:在系统引导时检测文件系统的顺序。
12、 如何在打包时排除指定目录?
$ tar --exclude=/home/dmtsai --exclude= .tar -zcvf myfile.tar.gz /home/ /etc
mysql》 update user set password=password(’123123’) where user=’root’;
Linux运维工程师面试题库及答案
Linux运维工程师面试题库及答案
为帮助大家顺利通过Linux面试,我为大家分享的是Linux面试各部分知识题库,希望对大家复习有所帮助!
Linux操作系统知识
1.常见的Linux发行版本都有什么?你最擅长哪一个?它的网站网站是什么?说明你擅长哪一块?
2.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?
3.企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)
4.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。
5.安装一台系统使用DVD光盘安装,如何安装50台Linux系统如何安装呢?思考一下。
6.用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?
7.Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?
8.一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?
9./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?
10.某一天误操作,执行了rm -rf * ,会有哪些情况发生?请举例。
Linux命令及文件操作
1.在/tmp/目录下创建test.txt文件,内容为: Hello,World! ,用一个命令写出来。
2.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。
3.用vi命令test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入,如何复制5行,删除10行,查找jingfeng的字符、把jingfeng替换为jfedu.net
4.查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。
5.当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。
6.如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。
7.每次开机在/tmp目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:`date +%Y%m%d`)
8.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。
9.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。
10.将普通用户test加入root组的命令是?
Linux磁盘及软件管理操作
1.如何添加一块新的50G硬盘到linux服务器系统作为单独的’分区,并正在使用?需要哪些操作步骤?
2.有个金士顿U盘,需要往服务器/var/www/html/目录下上传一个index.html文件,如何操作并完成。
3.有一块移动硬盘,上面有300G数据,如何快速cp到linux服务器?
***隐藏网址***
5.使用rpm命令安装、卸载、删除、更新ntp-0.7.12.x86_64.rpm这个软包。
6./var/www/html/是网站的发布目录,如何每天凌晨0点30对其进行自动备份,写出操作步骤?
7.使用tar命令打包并压缩/root目录,然后移动到/tmp下,将其权限设置其他人只读。
8.Yum命令与rpm命令的区别?如何使用rpm安装一个有依赖的包?
9.在这个月内,每天的早上 6 点到 12 点中,每隔 2 小时创建一个test.txt文件,内容为ok,如何实现?
10.将/usr/local/test目录下大于100K 的文件转移到/tmp 目录下。
11.简述 raid0 raid1 raid5三种工作模式的工作原理及特点。
12.如何查看占用端口 8080 的进程。
Linux服务配置及管理
1.请写出 apache2.X 版本的两种工作模式,以及各自工作原理。如何查看apache 当前所支持的模块,并且查看是工作在哪种模式下?
2.Linux下nfs在客户端无法挂载,请写出排查步骤?
3.Linux下已经部署了dhcp服务器,客户端无法获取的IP,如何解决?
4.常见的FTP软件有哪些?Linux最常用的是?如何共享一个资源让他人使用用户名和密码访问?
5.如何禁止FTP使用匿名用户登录?命令行如何访问ftp服务器?
6.ApacheWEB服务器的发布目录在哪里?
7.ApacheWEB服务器有几种工作模式,每种模式的简单区别?
8.MySQL服务器的用途是?Apache和mysql可以安装在一台机器吗?如何查看apache和mysql端口和进程?
9.如何在虚拟机上面部署4个网站,访问的域名分别为www.a1.com test.a1.com www.a2.com test.a2.com?
10.假设 Apache 产生的日志文件名为access_log,在 apache 正在运行时,执行命令 mv access_log access_log.bak,执行完后,请问新的 apache的日志会打印到哪里,为什么?
11.我们都知道 FTP 协议有两种工作模式,说说它们的大概的一个工作流程?
12.Linux内核引导时,从哪个文件中读取要加载的文件系统。
***隐藏网址***
14.Mysql创建数据库的命令,创建表的命令,插入语句的命令?
15.Mysql备份命令?Mysql如何给root用户对jfedu授权访问,密码为jfedu.net,请写出命令?
16.Mysql忘记密码该如何操作呢?
17.Linux运维工程师都需要具备哪些技能和职业品质?
;Java面试中都会遇到哪些问题
JAVA面试精选题
各位准程序猿们,能不能找到一份好工作,就看你知不知道这,66道最基本的JAVA面试题,请耐心看完,说不定这10分钟,会影响你一辈子
面试题NO.01-NO.05
问题:如果main方法被声明为private会怎样?
答案:能正常编译,但运行的时候会提示”main方法不是public的”。
问题:Java里的传引用和传值的区别是什么?
答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。
问题:如果要重写一个对象的equals方法,还要考虑什么?
答案:hashCode。
问题:Java的”一次编写,处处运行”是如何实现的?
答案:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。
问题:说明一下public static void main(String args)这段声明里每个关键字的作用
答案:public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。所以可见性设置为pulic.
static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。
void: main方法没有返回值。
String是命令行传进参数的类型,args是指命令行传进的字符串数组。
面试题NO.06-NO.10
问题:==与equals的区别
答案:==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。两个String对象存储的值是一样的,但有可能在内存里存储在不同的地方 .
==比较的是引用而equals方法比较的是内容。public boolean equals(Object obj) 这个方法是由Object对象提供的,可以由子类进行重写。默认的实现只有当对象和自身进行比较时才会返回true,这个时候和==是等价的。String, BitSet, Date, 和File都对equals方法进行了重写,对两个String对象 而言,值相等意味着它们包含同样的字符序列。对于基本类型的包装类来说,值相等意味着对应的基本类型的值一样。
问题:如果去掉了main方法的static修饰符会怎样?
答案:程序能正常编译。运行时会抛NoSuchMethodError异常。
问题:为什么oracle type4驱动被称作瘦驱动?
答案:oracle提供了一个type 4 JDBC驱动,被称为瘦驱动。这个驱动包含了一个oracle自己完全用Java实现的一个TCP/IP的Net8的实现,因此它是平台独立的,可以在运行时由浏览器下载,不依赖任何客户端 的oracle实现。客户端连接字符串用的是TCP/IP的地址端口,而不是数据库名的tnsname。
问题:介绍一下finalize方法
答案: final: 常量声明。 finally: 处理异常。 finalize: 帮助进行垃圾回收。
接口里声明的变量默认是final的。final类无法继承,也就是没有子类。这么做是出于基础类型的安全考虑,比如String和Integer。这样也使得编译器进行一些优化,更容易保证线程的安全性。final方法无法重写。final变量的值不能改变。finalize()方法在一个对象被销毁和回收前会被调用。finally,通常用于异常处理,不管有没有异常被抛出都会执行到。比如,关闭连接通常放到finally块中完成。
问题:什么是Java API?
答案:Java API是大量软件组件的集合,它们提供了大量有用的功能,比如GUI组件。
面试题NO.11-NO.15
问题:GregorianCalendar类是什么东西?
答案:GregorianCalendar提供了西方传统日历的支持。
问题:ResourceBundle类是什么?
答案:ResourceBundle用来存储指定语言环境的资源,应用程序可以根据运行时的语言环境来加载这些资源,从而提供不同语言的展示。
问题:为什么Java里没有全局变量?
答案:全局变量是全局可见的,Java不支持全局可见的变量,因为:全局变量破坏了引用透明性原则。全局变量导致了命名空间的冲突。
问题:如何将String类型转化成Number类型?
答案:Integer类的valueOf方法可以将String转成Number。下面是代码示例:
问题:SimpleTimeZone类是什么?
答案:SimpleTimeZone提供公历日期支持。
面试题NO.16-NO.20
问题:while循环和do循环有什么不同?
答案:while结构在循环的开始判断下一个迭代是否应该继续。do/while结构在循环的结尾来判断是否将继续下一轮迭代。do结构至少会执行一次循环体。
问题:Locale类是什么?
答案:Locale类用来根据语言环境来动态调整程序的输出。
问题:面向对象编程的原则是什么?
答案:主要有三点,多态,继承和封装。
问题:介绍下继承的原则
答案:继承使得一个对象可以获取另一个对象的属性。使用继承可以让已经测试完备的功能得以复用,并且可以一次修改,所有继承的地方都同时生效。
问题:什么是隐式的类型转化?
答案:隐式的类型转化就是简单的一个类型赋值给另一个类型,没有显式的告诉编译器发生了转化。并不是所有的类型都支持隐式的类型转化。
代码示例:
面试题NO.21-NO.25
问题:sizeof是Java的关键字吗?
答案:不是。
问题:native方法是什么?
答案:native方法是非Java代码实现的方法。
问题:在System.out.println()里面,System, out, println分别是什么?
答案:System是系统提供的预定义的final类,out是一个PrintStream对象,println是out对象里面一个重载的方法。
问题:封装,继承和多态是什么?
答案:简单来说,多态是指一个名字多种实现。多态使得一个实体通过一个通用的方式来实现不同的操作。具体的操作是由实际的实现来决定的。
多态在Java里有三种表现方式:方法重载通过继承实现方法重写通过Java接口进行方法重写。
问题:显式的类型转化是什么?
答案:显式的类型转化是明确告诉了编译器来进行对象的转化。
代码示例:
面试题NO.26-NO.30
问题:什么是Java虚拟机?
答案:Java虚拟机是能移植到不同硬件平台上的软件系统。
问题:类型向下转换是什么?
答案:向下转换是指由一个通用类型转换成一个具体的类型,在继承结构上向下进行。
问题:Java的访问修饰符是什么?
答案:访问权限修饰符是表明类成员的访问权限类型的关键字。使用这些关键字来限定程序的方法或者变量的访问权限。它们包含:
public: 所有类都可以访问 protected: 同一个包内以及所有子类都可以访问 private: 只有归属的类才能访问默认: 归属类及相同包下的子类可以访问。
问题:所有类的父类是什么?
答案:Object.
问题:Java的基本类型有哪些?
答案:byte,char, short, int, long, float, double, boolean。
面试题NO.31-NO.40
问题:静态类型有什么特点?
答案:静态变量是和类绑定到一起的,而不是类的实例对象。每一个实例对象都共享同样一份静态变量。也就是说,一个类的静态变量只有一份,不管它有多少个对象。类变量或者说静态变量是通过static这个关键字来声明的。类变量通常被用作常量。静态变量通常通过类名字来进行访问。当程序运行的时候这个变量就会创建直到程序结束后才会被销毁。类变量的作用域和实例变量是一样的。它的初始值和成员变量也是一样的,当变量没被初始化的时候根据它的数据类型,会有一个默认值。类似的,静态方法是属于类的方法,而不是类对象,它的调用并不作用于类对象,也不需要创建任何的类实例。静态方法本身就是final的,因为重写只会发生在类实例上,静态方法是和类绑定在一起的,不是对象。父类的静态方法会被子类的静态方法屏蔽,只要原来方法没有声明为final。非静态方法不能重写静态方法,也就是说,你不能在子类中把一个静态方法改成实例方法。
非静态变量在每一个对象实例上都有单独的一份值。
问题:&操作符和&&操作符有什么区别?
答案:当一个&表达式在求值的时候,两个操作数都会被求值,&&更像是一个操作符的快捷方式。当一个&&表达式求值的时候,先计算第一个操作数,如果它返回true才会计算第二个操作数。如果第一个操作数取值为fale,第二个操作数就不会被求值。
问题:Java是如何处理整型的溢出和下溢的?
答案:Java根据类型的大小,将计算结果中的对应低阶字节存储到对应的值里面。
问题:public static void写成static public void会怎样?
答案:程序正常编译及运行。
问题,声明变量和定义变量有什么不同?
答案:声明变量我们只提供变量的类型和名字,并没有进行初始化。定义包括声明和初始化两个阶段String s;只是变量声明,String s = new String(“bob”); 或者String s = “bob”;是变量定义。
面试题NO.41-NO.45
问题:Java支持哪种参数传递类型?
答案:Java参数都是进行传值。对于对象而言,传递的值是对象的引用,也就是说原始引用和参数引用的那个拷贝,都是指向同一个对象。
问题:对象封装的原则是什么?
答案:封装是将数据及操作数据的代码绑定到一个独立的单元。这样保障了数据的安全,防止外部代码的错误使用。对象允许程序和数据进行封装,以减少潜在的干涉。对封装的另一个理解是作为数据及代码的保护层,防止保护层外代码的随意访问。
问题:你怎么理解变量?
答案:变量是一块命名的内存区域,以便程序进行访问。变量用来存储数据,随着程序的执行,存储的数据也可能跟着改变。
问题:数值提升是什么?
答案:数值提升是指数据从一个较小的数据类型转换成为一个更大的数据类型,以便进行整型或者浮点型运算。在数值提升的过程中,byte,char,short值会被转化成int类型。需要的时候int类型也可能被提升成long。long和float则有可能会被转换成double类型。
问题:Java的类型转化是什么?
答案:从一个数据类型转换成另一个数据类型叫做类型转换。Java有两种类型转换的方式,一个是显式的类型转换,一个是隐式的。
面试题NO.46-NO.50
问题:main方法的参数里面,字符串数组的第一个参数是什么?
答案:数组是空的,没有任何元素。不像C或者C++,第一个元素默认是程序名。如果命令行没有提供任何参数的话,main方法中的String数组为空,但不是null。
问题:怎么判断数组是null还是为空?
答案:输出array.length的值,如果是0,说明数组为空。如果是null的话,会抛出空指针异常。
问题:程序中可以允许多个类同时拥有都有main方法吗?
答案:可以。当程序运行的时候,我们会指定运行的类名。JVM只会在你指定的类中查找main方法。因此多个类拥有main方法并不存在命名冲突的问题。
问题:静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?
答案:当类加载器将类加载到JVM中的时候就会创建静态变量,这跟对象是否创建无关。静态变量加载的时候就会分配内存空间。静态代码块的代码只会在类第一次初始化的时候执行一次。一个类可以有多个静态代码块,它并不是类的成员,也没有返回值,并且不能直接调用。静态代码块不能包含this或者super,它们通常被用初始化静态变量。
问题:一个类能拥有多个main方法吗?
答案:可以,但只能有一个main方法拥有以下签名:
否则程序将无法通过编译。编译器会警告你main方法已经存在。
面试题NO.51-NO.60
问题:简单的介绍下JVM是如何工作的?
答案:JVM是一台抽象的计算机,就像真实的计算机那样,它们会先将.java文件编译成.class文件(.class文件就是字节码文件),然后用它的解释器来加载字节码。
问题:如果原地交换两个变量的值?
答案:先把两个值相加赋值给第一个变量,然后用得到的结果减去第二个变量,赋值给第二个变量。再用第一个变量减去第二个变量,同时赋值给第一个变量。代码如下:
使用异或操作也可以交换。第一个方法还可能会引起溢出。异或的方法如下: int a=5,b=10;a=a+b; b=a-b; a=a-b;
问题:什么是数据的封装?
答案:数据封装的一种方式是在类中创建set和get方法来访问对象的数据变量。一般来说变量是private的,而get和set方法是public的。封装还可以用来在存储数据时进行数据验证,或者对数据进行计算,或者用作自省(比如在struts中使用javabean)。把数据和功能封装到一个独立的结构中称为数据封装。封装其实就是把数据和关联的操作方法封装到一个独立的单元中,这样使用关联的这些方法才能对数据进行访问操作。封装提供的是数据安全性,它其实就是一种隐藏数据的方式。
问题:什么是反射API?它是如何实现的?
答案:反射是指在运行时能查看一个类的状态及特征,并能进行动态管理的功能。这些功能是通过一些内建类的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的getName方法可以获取到类名。
问题:JVM自身会维护缓存吗,是不是在堆中进行对象分配,操作系统的堆还是JVM自己管理的堆?为什么?
答案:是的,JVM自身会管理缓存,它在堆中创建对象,然后在栈中引用这些对象。
面试题NO.61-NO.66
问题:虚拟内存是什么?
答案:虚拟内存又叫延伸内存,实际上并不存在真实的物理内存。
问题:方法可以同时即是static又是synchronized的吗?
答案:可以。如果这样做的话,JVM会获取和这个对象关联的java.lang.Class实例上的锁。这样做等于:
问题:String和StringTokenizer的区别是什么?
答案:StringTokenizer是一个用来分割字符串的工具类。
问题:transient变量有什么特点?
答案:transient变量不会进行序列化。例如一个实现Serializable接口的类在序列化到ObjectStream的时候,transient类型的变量不会被写入流中,同时,反序列化回来的时候,对应变量的值为null。
问题:哪些容器使用Border布局作为它们的默认布局?
答案:Window, Frame, Dialog。
问题:怎么理解什么是同步?
答案:同步用来控制共享资源在多个线程间的访问,以保证同一时间内只有一个线程能访问到这个资源。在非同步保护的多线程程序里面,一个线程正在修改一个共享变量的时候,可能有另一个线程也在使用或者更新它的值。同步避免了脏数据的产生。
以上回答转载自求职类公众号圈里求职,里面还有更多求职面试经,程序猿也要学起来~

更多文章:
iso镜像怎么解压成gho(请问官方iso怎么转化为gho)
2026年11月3日 20:50
win10要花钱装防火墙吗(windows10一定要安装防火墙吗)
2026年11月3日 20:40
sd卡要求格式化怎么办(sd卡提示需要格式化,怎么恢复数据)
2026年11月3日 20:00
电脑重启死循环进不去(电脑出现无限自动重启的死循环如何解决)
2026年11月3日 17:00
tif用什么打开(tif文件用什么打开Win10打开tif文件的详细步骤)
2026年11月3日 16:20






