技术面试经(2)
来源:互联网 发布:起点数据网 不更新 编辑:程序博客网 时间:2024/05/17 02:42
1、请用程序实现:扫描指定文件夹下的所有指定后缀文件:【人人笔试】
public ArrayList<String> searchFiles(String path, String suffix){
ArrayList<String> resultpaths = null;
String result;
File dir = new File(path);
File[] files = dir.listFiles();
if (files == null)
return null;
for (File f : files) {
// 为目录
if (f.isDirectory()) {
ArrayList<String> tmp = searchFiles(f.getPath(), suffix);
if (tmp != null) {
if (resultpaths == null)
resultpaths = new ArrayList<String>();
resultpaths.addAll(tmp);
}
// 为普通的文件
} else {
if (f.getName().endsWith(suffix)) {
result = f.getPath();
resultpaths.add(result);
}
}
}
return resultpaths;
}
复制代码
2、i++的线程安全性:
由于i++操作并不是原子的,所以同一进程的不同年该线程可能访问到该变量,所以它是非线程安全的。i++最终被编译后的反汇编代码如下:mov eax,[xx] ;inc eax。由于i++这条语句被分为两条操作指令,所以在执行这两条指令之间,可能由于中断而被调度到不同线程,于是产生了不安全性。【人人笔试】
3、CMWAP和CMNET的区别:
CMWAP是为手机wap上网而设立的,CMNET则主要是为PC、笔记本电脑等利用GPRS上网服务而设立的。CMWAP有部分限制,与CMNET资费上也存在差异。CMWAP介入指的是wap网的接入网关,只能浏览wap网址,CMNET则是接入internet浏览www网页的。【腾讯二面】
4、进程间通信的四种不同方式:
管道、信号、消息队列、共享内存。
使用消息队列传送控制类型的消息(数据量小且有明确的数据结构),使用共享内存传递数据类型的消息(数据量大);最好不要使用信号方式,因为当线程库不能做到异步安全时,使用信号作为通信方式会导致系统死锁。【百度】
5、你对华为文化的认识:
以客户为中心,以奋斗者为本,坚持长期艰苦奋斗,自我批判。【这是HR面时面试官告诉我的,要记住哈】
6、数据库的事务:访问并可能更新各种数据项的一个程序执行单元。数据库并发操作可能存在的异常情况:A、更新丢失;B、脏读取;C、不可重复读取。
SQL中的四个事务隔离级别:A、未授权读取:禁止两个事务同时写数据;B、授权读取:当一个事务在写数据时,禁止其他事务读写操作;C、可重复读取:只允许同时读取数据;D、串行:所有事务都是串行的而不是并发的。【网易笔试】
7、一个由C/C++编译的程序的内存分配:
栈区:由编译器子的那个分配释放,用于存放函数的参数值、局部变量的值等。
堆区:由程序员分配释放,若程序员没有释放,最终由操作系统回收。
全局区:全局变量和静态变量存储在一起。已经初始化的全局变量和静态变量存放在全局初始化区,未初始化的全局变量和静态变量存放在全局未初始化区。
常量区:存放常量字符串。
程序代码区:存放函数的二进制代码。【百度笔试】
8、TCP协议如何关闭连接的:
A、首先,Client(下面简称C)调用close(),给Server(下面简称S)发送FIN,请求关闭连接;S收到FIN之后给C发送ACK,同时关闭读通道,S状态变成CLOSE_WAIT状态;
B、接着,C收到对自己FIN确认的ACK之后,关闭写通道;
C、然后,S调用close()关闭连接,给C发送FIN,C收到后给S发送ACK,同时C关闭读通道,进入TIME_WAIT状态;
D、S收到C的ACK之后,关闭写通道,TCP连接转为CLOSED状态,也就是关闭连接;
E、C在TIME_WAIT状态下要等待最大数据段生存期的两倍,然后才进入CLOSED状态,TCP关闭连接的过程才彻底结束。【腾讯二面】
9、数据库系统提供两种不同类型的语言:
一种是数据定义语言,用于定义数据库模式;另一种是数据操纵语言,用于表达数据库的查询和更新。【网易笔试】
10、垃圾回收机制GC是Java语言的核心技术之一,GC有两种常用的算法来判断该对象是否可以回收:引用计数和对象引用遍历。
引用计数是GC的早期策略。在这种方法中,当创建一个对象时,就给这个对象分配一个变量,该对象计数设置为1。当其他对象被赋值为这个对象的引用时,计数加1.当一个对象的某个引用被回收或者被设置为新值时,对象的引用计数减1.任何引用计数为0的对象都可以当做垃圾回收。
对象引用遍历沿着整个对象图中的每天连接确定哪些为可达对象,并将他们进行标记。然后把标记的对象复制到堆栈的新域中,接着压缩整个堆栈,可以回收大量的内存碎片。
public ArrayList<String> searchFiles(String path, String suffix){
ArrayList<String> resultpaths = null;
String result;
File dir = new File(path);
File[] files = dir.listFiles();
if (files == null)
return null;
for (File f : files) {
// 为目录
if (f.isDirectory()) {
ArrayList<String> tmp = searchFiles(f.getPath(), suffix);
if (tmp != null) {
if (resultpaths == null)
resultpaths = new ArrayList<String>();
resultpaths.addAll(tmp);
}
// 为普通的文件
} else {
if (f.getName().endsWith(suffix)) {
result = f.getPath();
resultpaths.add(result);
}
}
}
return resultpaths;
}
复制代码
2、i++的线程安全性:
由于i++操作并不是原子的,所以同一进程的不同年该线程可能访问到该变量,所以它是非线程安全的。i++最终被编译后的反汇编代码如下:mov eax,[xx] ;inc eax。由于i++这条语句被分为两条操作指令,所以在执行这两条指令之间,可能由于中断而被调度到不同线程,于是产生了不安全性。【人人笔试】
3、CMWAP和CMNET的区别:
CMWAP是为手机wap上网而设立的,CMNET则主要是为PC、笔记本电脑等利用GPRS上网服务而设立的。CMWAP有部分限制,与CMNET资费上也存在差异。CMWAP介入指的是wap网的接入网关,只能浏览wap网址,CMNET则是接入internet浏览www网页的。【腾讯二面】
4、进程间通信的四种不同方式:
管道、信号、消息队列、共享内存。
使用消息队列传送控制类型的消息(数据量小且有明确的数据结构),使用共享内存传递数据类型的消息(数据量大);最好不要使用信号方式,因为当线程库不能做到异步安全时,使用信号作为通信方式会导致系统死锁。【百度】
5、你对华为文化的认识:
以客户为中心,以奋斗者为本,坚持长期艰苦奋斗,自我批判。【这是HR面时面试官告诉我的,要记住哈】
6、数据库的事务:访问并可能更新各种数据项的一个程序执行单元。数据库并发操作可能存在的异常情况:A、更新丢失;B、脏读取;C、不可重复读取。
SQL中的四个事务隔离级别:A、未授权读取:禁止两个事务同时写数据;B、授权读取:当一个事务在写数据时,禁止其他事务读写操作;C、可重复读取:只允许同时读取数据;D、串行:所有事务都是串行的而不是并发的。【网易笔试】
7、一个由C/C++编译的程序的内存分配:
栈区:由编译器子的那个分配释放,用于存放函数的参数值、局部变量的值等。
堆区:由程序员分配释放,若程序员没有释放,最终由操作系统回收。
全局区:全局变量和静态变量存储在一起。已经初始化的全局变量和静态变量存放在全局初始化区,未初始化的全局变量和静态变量存放在全局未初始化区。
常量区:存放常量字符串。
程序代码区:存放函数的二进制代码。【百度笔试】
8、TCP协议如何关闭连接的:
A、首先,Client(下面简称C)调用close(),给Server(下面简称S)发送FIN,请求关闭连接;S收到FIN之后给C发送ACK,同时关闭读通道,S状态变成CLOSE_WAIT状态;
B、接着,C收到对自己FIN确认的ACK之后,关闭写通道;
C、然后,S调用close()关闭连接,给C发送FIN,C收到后给S发送ACK,同时C关闭读通道,进入TIME_WAIT状态;
D、S收到C的ACK之后,关闭写通道,TCP连接转为CLOSED状态,也就是关闭连接;
E、C在TIME_WAIT状态下要等待最大数据段生存期的两倍,然后才进入CLOSED状态,TCP关闭连接的过程才彻底结束。【腾讯二面】
9、数据库系统提供两种不同类型的语言:
一种是数据定义语言,用于定义数据库模式;另一种是数据操纵语言,用于表达数据库的查询和更新。【网易笔试】
10、垃圾回收机制GC是Java语言的核心技术之一,GC有两种常用的算法来判断该对象是否可以回收:引用计数和对象引用遍历。
引用计数是GC的早期策略。在这种方法中,当创建一个对象时,就给这个对象分配一个变量,该对象计数设置为1。当其他对象被赋值为这个对象的引用时,计数加1.当一个对象的某个引用被回收或者被设置为新值时,对象的引用计数减1.任何引用计数为0的对象都可以当做垃圾回收。
对象引用遍历沿着整个对象图中的每天连接确定哪些为可达对象,并将他们进行标记。然后把标记的对象复制到堆栈的新域中,接着压缩整个堆栈,可以回收大量的内存碎片。
- 技术面试经(2)
- 技术面试经(1)
- ORACLE 面试问题-技术篇(2)
- ORACLE 面试问题-技术篇(2)
- 技术面试(算法)
- 技术面试(C++)
- 技术面试(操作系统)
- 面试(技术篇)
- 技术面面试总结2
- 面试经历(技术类)
- 技术点集(面试)
- 技术面试
- 面试技术
- 技术面试
- 面试---技术
- 技术面试
- 谷歌技术面试要点(Google面试)
- 银行技术岗面试面经
- 功能块移植感悟
- 从现在每天都陆续把以前写过看过的东西与大家分享!!呵呵 有点。。
- Visual studio 2008 && 2010 快捷键大全
- 技术面试经(1)
- Ubuntu 11.10 + JDK 1.6.29 配置 android环境
- 技术面试经(2)
- sqlhelper中文资料(转载)
- C++做的变态Sniffer注意这是我原来做竞赛的(黑色部分)
- 大并发处理解决方案
- 通过多线程为基于 .NET 的应用程序实现响应迅速的用户
- gcc 编译选项笔记
- 淘宝变了 马云没有变
- oracle开启日志归档 (成功)
- Java正则表达式入门