爱立信笔试
来源:互联网 发布:autocad mac 中文版 编辑:程序博客网 时间:2024/05/04 08:26
1、堆和栈的区别、分配方式、字节对齐
字节对齐:http://blog.csdn.net/zzffly9/archive/2007/10/26/1844421.aspx
union u2
{
char a[13];
int b;
};
cout<<sizeof(u2)<<endl; //输出结果为16,若将char a[13];改为char a[12];那么输出结果为12,原因自己思考。
2、进程和线程的区别
进程:程序的一次动态执行,是资源分配的基本单位。
线程:进程中执行的最小的单位,是处理机调度的基本单位。同一个进程内的线程共享该进程的所有资源。
互斥和同步:
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,
特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
进程间通信:管道、消息队列、事件、信号量、socket、共享内存
3、linux的命令、shell编程、管道
grep命令
4、数据库
5、交换分区
SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.
它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。
需要注意的是,虽然这个SWAP分区能够作为"虚拟"的内存,但它的速度比物理内存可是慢多了,因此如果需要更快的速度的话,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存.SWAP分区只是临时的解决办法.
qlinux下得分区推荐一个交换分区,一个根分区,其中交换分区如上所说作为redhat或者其它虚机所划分的内存不够时候来使用!
交换分区(swap)的合理值一般在内存的2 倍左右,可以适当加大。
6、Linux下安装文件的方法
http://bbs.51cto.com/archiver/tid-331179.html
(1)解析Linux应用软件安装包
常Linux应用软件的安装包有三种:
1) tar包,如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。
2) rpm包,如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。
3) dpkg包,如software-1.2.3-1.deb。它是Debain Linux提供的一种包封装格式。
而且,大多数Linux应用软件包的命名也有一定的规律,它遵循:
名称-版本-修正版-类型
例如:
1) software-1.2.3-1.tar.gz 意味着:
软件名称:software
版本号:1.2.3
修正版本:1
类型:tar.gz,说明是一个tar包。
2) sfotware-1.2.3-1.i386.rpm
软件名称:software
版本号:1.2.3
修正版本:1
可用平台:i386,适用于Intel 80x86平台。
类型:rpm,说明是一个rpm包。
注:由于rpm格式的通常是已编译的程序,所以需指明平台。在后面会详细说明。
而software-1.2.3-1.deb就不用再说了吧!大家自己练习一下。
(2)了解包里的内容
一个Linux应用程序的软件包中可以包含两种不同的内容:
1) 一种就是可执行文件,也就是解开包后就可以直接运行的。
2) 另一种则是源程序,也就解开包后,你还需要使用编译器将其编译成为可执行文件。
通常,用tar打包的,都是源程序;而用rpm、dpkg打包的则常是可执行程序。
(3) 搞定使用tar打包的应用软件
1. 安装:
整个安装过程可以分为以下几步:
1) 取得应用软件:通过下载、购买光盘的方法获得;
2) 解压缩文件:一般tar包,都会再做一次压缩,如gzip、bz2等,所以你需要先解压。如果是最常见的gz格式,
则可以执行:“tar –xvzf 软件包名”,就可以一步完成解压与解包工作。如果不是,则先用解压软件,再执行“tar –xvf 解压后的tar包”进行解包;
x 解压缩
z 具有gzip属性
v 显示详细信息
f 使用档案文件或设备,这个选项通常是必选的
3) 阅读附带的INSTALL文件、README文件;
4) 执行“./configure”命令为编译做好准备;
5) 执行“make”命令进行软件编译;
6) 执行“make install”完成安装;
7) 执行“make clean”删除安装时产生的临时文件。
(4) 搞定使用rpm打包的应用软件
rpm可谓是Redhat公司的一大贡献,它使Linux的软件安装工作变得更加简单容易。
1. 安装:
我只需简单的一句话,就可以说完。执行:
rpm –ivh rpm软件包名
更高级的,请见下表:
rpm参数 参数说明
-i 安装软件
-t 测试安装,不是真的安装
-p 显示安装进度
-f 忽略任何错误
-U 升级安装
-v 检测套件是否正确安装
2. 卸载:
我同样只需简单的一句话,就可以说完。执行:
rpm –e 软件名
不过要注意的是,后面使用的是软件名,而不是软件包名。例如,要安装software-1.2.3-1.i386.rpm这个包时,应执行:
rpm –ivh software-1.2.3-1.i386.rpm
而当卸载时,则应执行:
rpm –e software。
(5) 搞定使用deb打包的应用程序
这是Debian Linux提供的一个包管理器,它与RPM十分类似。但由于RPM出现得更早,所以在各种版本的Linux都常见到。
而debian的包管理器dpkg则只出现在Debina Linux中,其它Linux版本一般都没有。我们在此就简单地说明一下:
1. 安装
dpkg –i deb软件包名
如:dpkg –i software-1.2.3-1.deb
2. 卸载
dpkg –e 软件名
如:dpkg –e software
爱立信笔试题:N多到题目,涉及了C++、java、数据库、涉及模式、Linux、shell编程等多个方面,要学习的东西还有很多啊。
1、请说出命令 ./tesh.sh和 .test.sh的区别?
./tesh.sh表示在当前的工作目录中查找tesh.sh文件,然后执行。
.test.sh是在环境变量中对应的目录位置查找test.sh文件,然后执行。这种方式必须执行export PATH=.:$PATH,也就是将
当前工作目录加到环境变量中。
2、这样添加一个路径到$path中。
查看当前环境变量:
echo $PATH
有两种设置环境变量 PATH 的方法。第一种适用于为单一用户设置 PATH,第二种是为全局设置 PATH。
1.在用户主目录下有一个 .bashrc 文件,可以在此文件中加入 PATH 的设置如下:
export PATH=”$PATH:/your path1/:/your path2/…..”
注意:每一个 path 之间要用 “:“ 分隔。
注销重启 X 就可以了。
2.在 /etc/profile中增加。
PATH="$PATH:/home/zhengb66/bin"
export PATH
如果要使得计时生效,使用 source 命令
source .bashr
完成。
3、编写一个shell程序。将一个/tmp目录下以fuck开头的文件中的www.baidu.com替换为www.baidu.cn,并将这些文件拷贝到/etc/tmp文件夹下。
find ./useful/ -name "fuck*" | xargs sed -i "s/www.baidu.com/www.baidu.cn/g"find ./useful/ -name "fuck*" | xargs -i cp {} /tmp/
4、关于Linux的系统运行级别。
标准的Linux运行级为3或者5,如果是3的话,系统就在多用户状态。如果是5的话,则是运行着X Window 系统。如果目前正在3或5,而你把运行级降低到2的话,init就会执行K45named脚本。
不同的运行级定义如下:(可以参考Red Hat Linux里面的/etc/inittab)
缺省的运行级,RHS用到的级别如下:
# 0 - 停机(千万不要把initdefault设置为0 );
# 1 - 单用户模式;
# 2 - 多用户,但是没有NFS;
# 3 - 完全多用户模式;
# 4 - 没有用到;
# 5 - X11;
# 6 - 重新启动(千万不要把initdefault设置为6 )。
5、关于多态、以及虚函数默认参数的调用(可以参考effective C++),默认参数使用的是基类的。
class Parent
{
public:
virtual void Foo(int ele = 5)
{
cout<<"Parent::Foo()"<<ele*ele<<endl;
}
virtual void f(double d = 0.0)
{
cout<<"Parent::f(double)"<<endl;
}
};
class Child : public Parent
{
public:
virtual void Foo(int ele = 10)
{
cout<<"Child::Foo()"<<ele*ele<<endl;
}
virtual void f(complex<double> d)
{
cout<<"Child::f(complex<double>)"<<endl;
}
};
int main()
{
Parent *p1 = (Parent *)new Child;
p1->Foo(5);
p1->f(2.0);
Child *c = new Child;
Parent *p2 = c;
p2->Foo();
p2->f();
Child child;
child.Foo();
child.f(2.0);
}
6、设计模式的一个道题(一段代码让说出是说明模式)。关于工厂方法模式的。
7、关于Java的继承、多态的基础题目。Java完全不会。
8、采用多线程输出“ABBABBABB..........”.
9、数据机构是:给出前序、中序,让构造出该二叉树。
10、一些关于内存泄露的。
11、算法题:斐波那契数列的的递归实现。
12、数据库的题目想不清楚了。
13、解释虚函数指针、虚函数表。根据一段代码,画出每个类的虚函数指针、虚函数表。
14、makefile中= 和 :=的区别是什么?以及一些echo输出的问题,编写一个makefile文件编译一些文件。
http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/make-06.html
15、
unsigned float2bit(float f)
{
union
{
float f;
unsigned u;
}temp;
temp.f = f;
return temp.u;
}
int main()
{
cout<<float2bit(4.5)<<endl; 输出一个很大的数。
return 0;
}
- 爱立信笔试
- 爱立信笔试
- 爱立信笔试
- 爱立信笔试日记
- 爱立信笔试+面试
- 爱立信、EMC笔试面试
- 记爱立信公司的笔试
- 上海爱立信实习笔试面试
- 爱立信 20130610 南京南大笔试
- 南京爱立信笔试一题
- 爱立信笔试题目-mutable关键字
- 一道爱立信改自腾讯笔试题
- 爱立信
- 看博文《一道爱立信改自腾讯笔试题 》所想
- 上海爱立信笔试题-分享(真的就一道题)
- 爱立信工资标准
- 爱立信反腐
- 爱立信面试
- Initialization of Vector
- Android Activity Lifecycle(Finish)
- 双缓冲
- 多业务安全路由器网关走俏的原因
- 生成一定范围的随机数
- 爱立信笔试
- OverLoading and Scope
- getRecentTasks过程
- C与C++在Linux下的集成问题
- qsort函数简介
- hadoop管理NameNode AND SecondaryNameNode
- Linux下的段错误产生的原因及调试方法
- JavaScript 确认框 confirm
- Android 左右滑动切换页面或Activity的效果实现