网通公司常见笔试题(精选7篇)
试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)
解答:
BOOL型变量:if(!var)
int型变量: if(var==0)
float型变量:
const float EPSINON = 0.00001;
if ((x >= – EPSINON) && (x <= EPSINON)
指针变量: if(var==NULL)
剖析:
考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思,
一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量 (short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。
浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则判为错,得0分。
试题2:以下为Windows NT下的`32位C++程序,请计算sizeof的值
void Func ( char str[100] )
{
sizeof( str ) = ?
}
void *p = malloc( 100 );
sizeof ( p ) = ?
解答:
sizeof( str ) = 4
sizeof ( p ) = 4
剖析:
Func ( char str[100] )函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。
数组名的本质如下:
(1)数组名指代一种数据结构,这种数据结构就是数组;
例如:
char str[10];
cout << sizeof(str) << endl;
输出结果为10,str指代数据结构char[10]。
(2)数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;
char str[10];
str++; //编译出错,提示str不是左值
(3)数组名作为函数形参时,沦为普通指针。
Windows NT 32位平台下,指针的长度(占用内存的大小)为4字节,故sizeof( str ) 、sizeof ( p ) 都为4。
试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?
least = MIN(*p++, b);
解答:
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
MIN(*p++, b)会产生宏的副作用
剖析:
这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换,
程序员对宏定义的使用要非常小心,特别要注意两个问题:
(1)谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严格地讲,下述解答:
#define MIN(A,B) (A) <= (B) ? (A) : (B)
#define MIN(A,B) (A <= B ? A : B )
都应判0分;
(2)防止宏的副作用。
宏定义#define MIN(A,B) ((A) <= (B) ? (A) : (B))对MIN(*p++, b)的作用结果是:
((*p++) <= (b) ? (*p++) : (*p++))
这个表达式会产生副作用,指针p会作三次++自增操作。
除此之外,另一个应该判0分的解答是:
#define MIN(A,B) ((A) <= (B) ? (A) : (B));
这个解答在宏定义的后面加“;”,显示编写者对宏的概念模糊不清,只能被无情地判0分并被面试官淘汰。
试题4:为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern “C” {
#endif
/*…*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
解答:
头文件中的编译宏
#ifndef __INCvxWorksh
#define __INCvxWorksh
#endif
的作用是防止被重复引用。
作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在symbol库中的名字与C语言的不同。例如,假设某个函数的原型为:
void foo(int x, int y);
该函数被C编译器编译后在symbol库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。_foo_int_int这样的名字包含了函数名和函数参数数量及类型信息,C++就是考这种机制来实现函数重载的。
为了实现C和C++的混合编程,C++提供了C连接交换指定符号extern “C”来解决名字匹配问题,函数声明前加上extern “C”后,则编译器就会按照C语言的方式将该函数编译为_foo,这样C语言中就可以调用C++的函数了。
试题5:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
函数头是这样的:
//pStr是指向以’′结尾的字符串的指针
//steps是要求移动的n
void LoopMove ( char * pStr, int steps )
{
//请填充…
}
解答:
正确解答1:
1、使用C语言将一个1G字节的字符数组从头到尾全部设置为字’A’,在一台典型的当代PC上,需要花费的CPU时间的数量级最接近:
A、0.001秒 B、1秒
C、100秒 D、2小时
2、在某些极端要求性能的场合,我们需要对程序进行优化,关于优化,以下说法正确的是:
A、将程序整个用汇编语言改写会大大提高程序性能,
B、在优化前,可以先确定哪部分代码最为耗时,然后对这部分代码使用汇编语言改写,使用的汇编语句数目越少, 程序就运行越快。
C、使用汇编语言虽然可能提高了程序性能,但是降低了程序的可移植性和可维护性,所以应当绝对避免。
D、适当调整汇编指令的顺序,可以缩短程序运行的时间。
3、对如下C语言程序在普通X86 PC上面运行时候的输出叙述正确的是:
char*f ( )
{
char X[512];
sprintf (x,”hello world”);
return x 6;
}
main
{
printf(“%s”,f()};
}
A、程序可能崩溃,也可能输出hello world
B、程序可能崩溃,也可能输出world
C、程序可能崩溃,也可能输出hello
D、程序一定会崩溃
4、方程x1 x2 x3 x4=30有多少满足x1>=2,x2>=0,x3>=—5,x4>=8的整数解?
A、3276 B、3654
C、2925 D、17550
5、一个袋子里装了100个苹果,100个香蕉,100个桔子,100个梨,
如果每分钟从里面随机抽取一个水果,那么最多过多少分钟时间能肯定至少拿到一打相同种类的水果?(1打=12个)
A、40 B、12 C、24 D、45
6、双败淘汰赛与淘汰赛相仿,也是负者出局,但负一场后并未被淘汰,知识跌入负者组,在负者组再负者(即总共已负两场)才被淘汰,现在有10个人参加双败淘汰赛,假设我们取消最后的胜者组冠军VS负者组冠军的比赛,那么一共需要举行多少场比赛?
A、16 B、17 C、18 D、19 E、20
7、n个节点的二叉树,最多可以有多少层?
A、n/2 B、log(n) C、n-1 D、n
8、下面哪个序列不是此图的一个拓扑排序?
A、ebfgadch B、aebdgfch
C、adchebfg D、aedbfgch
9、假如某主机安装了2GB内存,在其上运行的某支持MMU的.32位Linux发行版中,一共运行了X,Y,Z三个进程,下面关于桑格程序使用内存的方式,哪个是可行的?
A、X,Y,Z的虚拟地址空间都映射到0—4G的虚拟地址上
B、X在堆上分配总大小为1GB的空间,Y在堆上分配200MB,Z在堆上分配500MB,并且内存映射访问一个1GB的磁盘文件。
C、X在堆上分配1GB,Y在堆上分配800MB,Z在堆上分配400MB
D、以上访问方式都是可行的
10、有12个球,外形相同,其中一个小球的质量与其他11个不同,给一个天平,需要几次把这个小球找出来并且求出这个小球是比其他的轻还是重()
1 上海乐升笔试:
冯诺依曼机的体系结构
各种RAM的名词解释
递归求5!
C程序优化
翻译有关windows资源处理的文章
上机:
写api 进行分数的四则运算
写api 针对2个8位的数的四则运算 该平台不支持16位
写api 对一个10个元素的数组排序 并且支持检索
卢老师教过的放10个球到盒子问题
2 扬讯科技(手机)写个MIN(a, b)的宏
函数指针
指针数组等
游戏程序的特点
游戏程序的结构
链表的插入 索引
typedef 和 #define 的优点和缺点
你最熟悉的游戏算法
3 巨人网络
1.class String
{
public:
String(const char *cp = NULL);
String(const String & cp);
~String;
String& operator = (const String & cp);
operator const char *() const;
private:
char *m_data;
}
1) 完成类的方法;
String::String(const char *str)
{
if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
{
m_data = new char[1] ;
m_data[0] = ;
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,
String::String(const String &another)
{
m_data = new char[strlen(another.m_data) + 1];
strcpy(m_data,other.m_data);
}
String& String:perator =(const String &rhs)
{
if ( this == &rhs)
return *this ;
delete []m_data; //删除原来的数据,新开一块内存
m_data = new char[strlen(rhs.m_data) + 1];
strcpy(m_data,rhs.m_data);
return *this ;
}
String::~String()
{
delete []m_data ;
}
operator const char *() const
{
return str;
}
2) operator const char *() const 后面的const的作用.
2.new/delete和malloc/free的区别,什么时候需要建立自己的内存分配机制,
3.static和volatile的用途。
static:
4.什么是深拷贝?什么是浅拷贝?举例说明。
#include
#include
class Base
{
private:
char * name;
public:
Base(char * className)
{
name = new char[strlen(className)+1];
strcpy(name, className);
}
~Base()
{
delete name;
}
char *copyName()
{
char newname[256];
strcpy(newname, name);
return newname;
}
char *getName()
{
return name;
}
static void print (Base base)
{
printf(“name: %sn”,base.name);
}
};
class Subclass : public Base
{
public:
Subclass(char * className) : Base(className)
{
}
};
int main()
{
Base *pBase = new Subclass(“test”);
Base::print(*pBase);//用后会被释放掉,下面的指向将为空指针,应改为引用
printf(“name: %sn”, pBase->getName());
printf(“new name: %sn”, temp);
return 0;
}
对上面程序进行编译不报错,但是程序不能执行.
下面是改正后的:
#include
#include
class Base
{
private:
char * name;
public:
Base(char * className)
{
name = new char[strlen(className)+1];
strcpy(name, className);
}
~Base()
{
delete name;
}
char *copyName()
{
char *newname = new char[strlen(name)+1];
strcpy(newname, name);
return newname;
}
char *getName()
{
return name;
}
static void print (Base base)
{
base.name = base.copyName(); //深度拷贝
printf(“name: %sn”,base.name);
}
};
class Subclass : public Base
{
public:
Subclass(char * className) : Base(className)
{
}
};
int main()
{
Base *pBase = new Subclass(“test”);
Base::print(*pBase);//用后会被释放掉,下面的指向将为空指针,应改为引用
printf(“name: %sn”, pBase->getName());
char *temp = pBase->copyName();
printf(“new name: %sn”, temp);
delete temp;
return 0;
}
5.一个自定义类String的改错题,
6.void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, “hello world”);
printf(str);
}
请问运行Test函数会有什么样的结果?
如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例7-4-1中,Test函数的语句GetMemory(str, 200)并没有使str获得期望的内存,str依旧是NULL,为什么?
void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}
void Test(void)
{
char *str = NULL;
GetMemory(str, 100); // str 仍然为 NULL
strcpy(str, “hello”); // 运行错误
}
示例7-4-1 试图用指针参数申请动态内存
毛病出在函数GetMemory中。编译器总是要为函数的每个参数制作临时副本,指针参数p的`副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p的内容,就导致参数p的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_p申请了新的内存,只是把_p所指的内存地址改变了,但是p丝毫未变。所以函数GetMemory并不能输出任何东西。事实上,每执行一次GetMemory就会泄露一块内存,因为没有用free释放内存。
如果非得要用指针参数去申请内存,那么应该改用“指向指针的指针”,见示例7-4-2。
void GetMemory2(char **p, int num)
{
*p = (char *)malloc(sizeof(char) * num);
}
void Test2(void)
{
char *str = NULL;
GetMemory2(&str, 100); // 注意参数是 &str,而不是str
strcpy(str, “hello”);
cout<< str << endl;
free(str);
}
7.int i;
std::list list1;
for(i = 0; i < 8; i++)
list1.push_back(i);
for(std::list::iterator = list1.begin(); iterator != list1.end(); iterator++)
if (*iterator % 2)
list1.erase(iterator);
这段代码在运行时会产生什么错误,怎么改正。
erase之后iterator失效
就加一个 就完了。
#include
int main()
{
std::list list1;
for(int i=0;i < 8;i++)
list1.push_back(i);
for(std::list::iterator it=list1.begin();it!=list1.end();++it)
{
if(*it%2 == 0)
{
it = list1.erase(it);
it --;
}
}
return 0;
}
8.对Gcc编译选项做些介绍。
9.Gdb中如何设置中断点,逐步调试程序。
10.游戏编程中如何对显存进行管理。//这是唯一的一道和游戏直接有关题目。
1.简历寄过去可以用ems什么的,比平信快,而且容易引起hr注意
2.移动好像比较看重综合素质,如果你的方向不好,没有实习经历,不要灰心。面试的时候要有信心,突出自己的优点,还有就是诚实,我不懂就说直接说不会。他问我db会什么?我告诉他就上过2个关于db的课,没有实际经验。
3.服装也不是关键,我去的时候穿的牛仔裤和球鞋。
4.回答问题的时候,多举例说明,这样能让人信服,而且面试官印象深刻,这样你就有希望了。
解释一下广东移动深圳分公司和中国移动深圳分公司的区别:
广深圳移动是属于广东移动,广东移动再属于中国移动的,主要是搞运营的,大家看到的网上招聘,估计都是广深圳移动的中深圳移动直接归属中国移动,主要是移动的海外漫游帐单管理,主要是维护和测试之类的。
更多相关的热门面试试题分享:
HTC笔试题
尼尔森公司笔试题
国泰金融笔试题目
1:定量分析工作要求测定结果的误差应( ),
欧利雅化工有限公司 技术研发人员笔试题
。2:烷基苯最容易发生的裂解是( )。3:浓度为1 . 0×10-3mol/L配位剂L滴定1 . 0×10-3mol/L金属离子M,设配合物ML的稳定常数为KML=1014 . 0,在何种pH条件下可以准确滴定( )。4:在高效液相色谱中,范氏方程中的哪一项对柱效的影响可以忽略不计? 5:酸碱电位滴定法最常用的电极对为( )。6:列四个化合物中,在紫外光区出现二个吸收带的是7:下列情况中,不宜用永停滴定法的是( )。8:以KMnO4法测定Fe2+时,需在一定酸度下进行滴定,下列酸适用的为( )。9:吸光物质吸收光谱的峰位λmax取决于( )。10:用GC法分析中药中某成分时,可用以下哪个参数作为定性的依据?11:在60.0MHz的核磁共振仪中,某质子与TMS的共振频率相差120Hz,在90.0MHz的仪器中,它们的共振频率相差( ),12:使用60 . 0MHz核磁共振仪,化合物中某质子和四甲基硅烷之间的频率差为120Hz,则其化学位移(ppm)为( )。13:质子的化学位移与该质子连接的碳原子的杂化状态及相关基团的磁各向异性效应有关,综合这二种影响造成质子的化学位移顺序如下( )。14:质谱法中根据二项式(a+b)n的展开,可以推导出( )。15:如果共沉淀的杂质离子与沉淀的构晶离子半径相近、电荷相同,则易形成( )。16:丙酮的 =1715cm-1,若其中一个甲基被一苯基所取代形成苯乙酮后,则 将( )。17:根据非水滴定的原理及滴定分析的要求,溶剂的`选择是非水滴定中的一个重要问题,首先要考虑溶剂的1:1962年,美国总统肯尼迪首次提出了著名的消费者“四项权利”,这四项权利是指( ),
上海万宝盛华人力资源有限公司 客户经理笔试题
。A.安全权、知情权、自由选择权和监督权B.知情权、公平交易权、自由选择权、监督权C.安全权、知情权、自由选择权和受尊重权D.知情权、公平交易权、自由选择权和受尊重权2:为了扩大销售量、增加总收入而采取降价策略的产品需求价格弹性ED应满足 A.ED>1B.ED=1C.0D.ED=03:我国第三阶段1992年10月至8月行政改革的根本途径是实现A.转变职能B.理顺关系C.精兵简政D.政企分开4:下面对电话交流描述不正确的是A.具有平等和遮盖的作用B.无须注意面部表情C.无法影响和控制对方的言行D.不利于形成良好的第一印象5:企业在国际营销活动中面临的最大的政治风险是A.外汇管制B.进口限制C.国有化D.税收管制6:IMF是指( )。A.国际货币基金组织B.国际劳工局C.国际贸易法规委员会D.国际标准组织7:根据威尔斯等人提出的扩散/学习跨文化分析模型,英国和东欧属于 A.高相关/快速扩散B.高相关/低速扩散C.低相关/快速扩散D.低相关/低速扩散8:政府开展公关活动的最终目标是 A.促进公众的认知B.提高政府的知名度C.提高社会效益D.提高政府的美誉度9:企业法人有效设立的标志是A.提出登记申请B.通过前置审批C.取得企业名称核准通知书D.取得企业法人营业执照10:《<中国公共关系职业道德准则>草拟及实施草案》的提出时间是 A.1988年B.1989年C.1990年D.1991年11:社会心理学研究的三个层面是社会层面、个人层面、A.人际层面B.团体层面C.家庭层面D.民族层面12:对多种目标和多个可行方案做全面权衡,选出效益最大、可靠性最大、弊病最少的.方案,这是A.信息原则的要求B.预测原则的要求C.可行原则的要求D.择优原则的要求13:在一般情况下,合同争议行政调解的时限是A.自受理之日起2个月调解终结B.自受理之日起3个月调解终结C.自调解之日起2个月调解终结D.自调解之日起3个月调解终结14:用于表述连续信息的视图方式是A.直方图B.饼形图C.条形图D.金字塔型图15:GATS的透明度原则规定,若缔约国的法律有所变化或立新法,应通知所有缔约国,并要求该通知至少 A.每月一次B.每季一次C.每半年一次D.每年一次
上海奥格利环保工程有限公司 化工工艺工程师笔试题
。2:铁铵矾指示剂法测定对象为下列哪组物质时误差较小?3:中药成分黄酮化合物(C16H10O2)的不饱和度为4:有一组测量值,已知其标准值,要检验得到这组数据的分析结果是否可靠,应采用( )。5:用GC法分析中药中某成分时,可用以下哪个参数作为定性的依据?6:用莫尔法测定KBr含量时,若蒸馏水中含有微量Cl-,为得到准确的分析结果,应作( )。7:下列化合物中能同时产生K、R、B三个吸收带的是( )。8:根据非水滴定的原理及滴定分析的要求,溶剂的选择是非水滴定中的一个重要问题,首先要考虑溶剂的9:在分光光度计上用标准对照法测定某中药注射液中黄酮甙的含量,标准溶液浓度为0.02mg/ml,其吸光度为0.460,样品供试液吸光度为0.230,样品中黄酮甙含量为( )。10:可用如下哪种试验方法减小分析测定中的偶然误差?11:使用60 . 0MHz核磁共振仪,化合物中某质子和四甲基硅烷之间的频率差为120Hz,则其化学位移(ppm)为( ),12:下列化合物在紫外光区吸收带λmax最长的是( )。13:样品中被测组分是MgO(MMgO=40.31g/mol),称量形式是Mg2P2O7( =222.55g/mol),则换算因数F值是( )。14:BaSO4沉淀重量法测定Ba2+时,对于BaSO4沉淀的洗涤最好使用( )。15:在分光光度法中读数误差最小的吸光度为16:铬酸钾指示剂法中,滴定反应只能在如下溶液中进行( )。
【网通公司常见笔试题】推荐阅读:
网通公司宣传册材料10-20
房地产公司财务笔试题06-26
网通公司工作总结及工作安排11-21
公司企业常见部门及职务名称英文翻译11-14
公司信贷试题12-06
电力公司岗位竞聘试题06-02
《公司法》往届试题11-08
移动公司招聘笔试试题07-14
公司成本核算考试试题09-08
外企公司招聘高级经理试题07-23