亚信科技面试题 亚信科技面试题及参考答案.docx
《亚信科技面试题 亚信科技面试题及参考答案.docx》由会员分享,可在线阅读,更多相关《亚信科技面试题 亚信科技面试题及参考答案.docx(8页珍藏版)》请在冰豆网上搜索。
亚信科技面试题亚信科技面试题及参考答案
亚信科技面试题亚信科技面试题及参考答案
亚信的辉煌历程见证着中国通信行业的信息化发展进程。
亚信科技的求职竞争很激烈,准备好怎么回答面试题很关键,以下是WTT为大家收集到的亚信科技面试题,希望对大家有帮助!
亚信科技面试题篇1
1.排序算法时间复杂度,说出你喜欢的一种算法,说其原因
插入排序O(n^2)
归并排序O(nlog2n)
快速排序最好O(nlog2n)最坏O(n^2)
冒泡排序O(n^2)
选择排序O(n^2)
堆排序O(nlogn)
希尔排序O(n^2)
2.逆序单链表
3.进程间通信有哪几种
现在最常用的进程间通信的方式有:
管道,信号,信号量,消息队列,共享内存,套接字(socket)。
(1)管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的
进程间使用。
进程的亲缘关系通常是指父子进程关系
(2)信号量是一个计数器,可以用来控制多个进程对共享资源的访问。
它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。
因此,主
要作为进程间以及同一进程内不同线程之间的同步手段
(3)消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。
消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点
(4)信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生
(5)共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由
一个进程创建,但多个进程都可以访问。
共享内存是最快的IPC方
式,它是针对其他进程间通信方式运行效率低而专门设计的。
它往往
与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
(6)套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信
4.进程和线程的区别
简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。
这就是进程和线程的重要区别。
5.OSI七层网络模型与TCP/IP四层网络模型
Osi:
物理,数据链路,网络,传输,会话,表示,应用
TCP/IP:
网络接口,网间,传输,应用
6.用socket写出server和client的函数
Server:
intsocket,intbind,listen,accept,read,write
Client:
socket,connect,write,read
7.多线程有哪些函数,越多越好
pthread_create创建线程
pthread_self获取自身线程的id
pthread_once一次性初始化
pthread_join获得进程的终止状态
pthread_mutex_init初始化一个互斥量8.TCP和UDP的区别
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。
当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
9.Explicit含义和作用
禁止隐式转换,防止程序员误操作
亚信科技面试题篇2
1.c++继承与派生中,隐藏与覆盖的条件,含义,区别
成员函数被重载的特征:
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual关键字可有可无。
覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual关键字。
“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。
此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。
此时,基类的函数被隐藏(注意别与重写混淆)
1.构造和析构函数是什么,写一个拷贝构造函数
当一个类含有一些数据成员,你需要在实例化类的时候就初始化这些成员,你就需要自己定义构造函数。
例如Person类含有m_strName成员,你在声明该类是就将其赋值PersonmyPerson(“张三”)
对于拷贝构造函数,为了防止浅拷贝造成的两个对象指向同一内存,当删除其中一个对象后导致另一对象指向内容为空的时候,我们就需要定义自己的拷贝构造函数来进行深拷贝。
当你的类数据成员中使用了动态分配的内存,你就需要定义自己的析构函数来释放这部分内存,防止内存泄露。
系统定义的默认构造函数和析构函数函数名和类名相同,如Person类:
Person构造函数
~Person析构函数
拷贝构造:
String:
:
String(constString&;other)
{
}
String&;String:
:
operate=(constString&;other)
{
}
2.Vector容器
vectortest;//建立一个vector
test.pushback
(1);//把1和2压入vector这样test[0]就是1,test[1]就是2
test.pushback
(2);
亚信科技面试题篇3
1.统计目录下所有文件数目ls|wc–l
2.查找出10天未改动的文件find.–ctime+10
3.删除一个目录下的所有文件(不能用rm–f,用xargs)If(this==&;other)Return*this;Delete[]data;Intlength=strlen(other.data);Data=newchar[length+1];Strcpy(data,other.data);Return*this;Intlength=strlen(other.data);Data=newchar[length+1];Strcpy(data,other.data);
find.-typef-execrm{}\;
find.-typef|xargsrm
4.用一个命令新建一个目录a,a里面含有目录bmkdir-pa/b
5.Sed正则表达式
6.Vi查找一个字符串
7.Ls–l和ls–l*的区别
Ls–l只显示当前目录下的文件和目录;
Ls–l*显示当前目录下的文件和目录,并且显示子目录下的所有文件和目录
8.Shell有几种
目前流行的Shell有ash,bash,ksh,csh,zsh等
bash是Linux系统默认使用的Shell
9.Awk的使用(最后2列数据相加)
2.说出你常用的shell命令。
并解释其作用
3.把一个目录下所有文件的名称括目录后加.bak
rename��s/$/\.bak/��*
4.Doc文件的换行符和unix下换行符有什么区别
DOC和windows中换行由回车和换行符\r决定
Unix就一个换行符\n
ORACLE部分
1.建1张表,2个字段确定一个主键和索引,然后根据这2个字段统计最大费用(写出建表,建索引和建主键的语句写出)
CREATETABLEtable(
Namevarchar2(4)NOTNULL,
Valuevarchar2(20),PRIMARYKEY(name,value)
)
TABLESPACE表空间;
CREATEINDEXDCUSTMSG_IDXONDCUSTMSG(name,value);
CREATEUNIQUEINDEXDCUSTMSG_PKONDCUSTMSG(name,value);
2.Truncate与delete的区别
truncate的作用是清空一个表格,在删除数据方面,其与delete有一些区别,
1、在功能上,truncate是清空一个表的内容,它相当于deletefromtable_name。
2、delete是dml操作,truncate是ddl操作;因此,用delete删除整个表的数据时,会产生大量的roolback,占用很多的rollbacksegments,而truncate不会。
3、在内存中,用delete删除数据,表空间中其被删除数据的表占用的空间还在,便于以后的使用,另外它是“假相”的删除,相当于windows中用delete删除数据是把数据放到回收站中,还可以恢复,当然如果这个时候重新启动系统(OS或者RDBMS),它也就不能恢复了!
而用truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,相当于windows中用shift+delete删除数据,不能够恢复!
4、truncate调整highwatermark而delete不;truncate之后,TABLE的HWM退回到INITIAL和NEXT的位置(默认)delete则不可以。
5、truncate只能对TABLE,delete可以是table,view,synonym。
6、TRUNCATETABLE的对象必须是本模式下的,或者有dropanytable的权限而DELETE则是对象必须是本模式下的,或被授予DELETEONSCHEMA.TABLE或DELETEANYTABLE的权限。
7、在外层中,truncate或者delete后,其占用的空间都将释放。
8、truncate和delete只删除数据,而drop则删除整个表(结构和数据)。
3.Dml和ddl的区别
修改数据结构,数据库结构等等的语句成为DDL
比如:
altertable,createtable,alteruser,truncatetable等等修改数据本身的语句成为DML
比如:
update,insert,delete
DDL不可以rollback,但是DML可以
4.索引的数据结构是什么,为什么用这个?
B树
5.视图是什么,并建立一个
CREATEORREPLACEVIEWtableview(字段1,字段2)as(select字段1,字段2fromtable1UNIONselect字段1,字段2fromtable2)/
6.内链接和外连接分别是什么?
有什么关系?
7.删除一个表的重复数据
8.删除一个表的重复数据,只留一条数据(用一个sql)
selectdistinctnumfromtabnameintotempa1
deletefromtabname
insertintotabnameselect*froma1
deletetest3a
WHEREEXISTS(SELECT1
FROMtest3b
WHEREa.A=b.Aanda.B=b.BANDa.rowid<b.rowid)