一.单选题:

Ps : 当时由于去广州路上颠簸很困,导致刚做几分钟题目就睡了一觉。起来发现20分钟过去了。擦擦!

1. 假设磁盘文件foobar.txt 由 6个ASCII 码字符“foobar” 组成,那么程序的输出是什么?

 #include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char const *argv[])
{
int fd1, fd2;
char c;
fd1 = open("foobar.txt", O_RDONLY);
fd2 = open("foobar.txt", O_RDONLY);
read(fd1, &c, );
read(fd2, &c, );
printf("c=%c\n", c);
return ;
}

A.f B.o C.b D.a

我的思路是 先从fd1 指向文件里面读一个字符赋给字符c,之后在从fd2 里面读一个字符赋给字符c,当然是覆盖了,所以是 f 如果第二个read里面读的是fd1 文件描述副,那么答案就应该是 o,因为读了两次。o会覆盖之前的c。

2.还是foobar.txt文件,下面程序的输出是什么?

 #include <stdio.h>
#include <fcntl.h>
#include <unistd.h> int main(int argc, char const *argv[])
{
int fd;
char c;
fd = open("foobar.txt", O_RDONLY);
if(fork()==){
read(fd, &c, );
return ;
}
wait(NULL);
read(fd, &c, );
printf("c=%c\n", c);
return ;
}

A.f B.o C.b D.a

这道题是 o 因为父亲等孩子退出之后才能进行第二次读操作,毕竟前面有wait 要先等待孩子执行完,父进程才可以执行

3.还是foobar.txt 下面程序输出是什么?

 #include <stdio.h>
#include <unistd.h>
#include <fcntl.h> int main(int argc, char const *argv[])
{
int fd1, fd2;
char c;
fd1 = open("foobar.txt", O_RDONLY);
fd2 = open("foobar.txt", O_RDONLY);
read(fd2, &c, );
dup2(fd2, fd1);
read(fd1, &c, );
printf("c=%c\n", c);
return ;
}

A.f B.o C.b D.a

还是 o ,考察的是dup2 重定向用法,也就是说 是fd1描述符指向fd2, 对fd1操作的时候,就是间接对fd2 进行操作,所以第二次read操作是读的fd2文件。

4.一下编程语言不是解释执行的是?

A Javascript     B Python  C  JAVA  D Pascal

从表面上看:javascript是解释执行语言,不需要编译器的介入, 服务器只对动态脚本进行解释或执行
Python 脚本语言  当然也是解释执行
JAVA 由虚拟机编译,所以也是解释执行。
毕竟Pascal 是各大OJ都有的语言,求速度,编译型语言的程序执行效率高,所以Pascal是编译型语言。

从本质上看:考编译语言和解释语言的区别,编译语言写的程序执行之前需要专门的编译过程,把程序编译成为机器语言的文件,例如exe,之后运行后就不用重新编译了。直接使用exe文件就OK了,毕竟编译一次,多次运行。效率搞。
解释语言不需要编译,在运行的时候才编译,例如JAVA,专门有一个解释器来执行,这样每执行一次就要翻译一次,效率不高。

5. 设有CMyClass类的对象a , 那么语句CMyClass b = a; 会调用CMyClass类的?

A 内存拷贝函数      B 赋值运算符重载函数     C 拷贝构造函数   D 以上都不对

看C++就郁闷,对C++根本一点不懂,但这不是放弃这道题的借口。
一点点了解先:
内存拷贝函数:这个C库函数 memcpy 就是实现这个的,跟C++ 类关联不大,所以第一个排除,但既然有考到,就把memcpy 深深了解一下

void *memcpy(void *dest, const void *source, size_t count)
{
assert((NULL != dest) && (NULL != source));
char *tmp_dest = (char *)dest;
char *tmp_source = (char *)source;
while(count --)//不对是否存在重叠区域进行判断
*tmp_dest++ = *tmp_source++;
return dest;
}

和字符串拷贝strcpy是有区别的。

这道题目 主要考 赋值运算符重载函数 和 拷贝构造函数区别,简单的说,拷贝构造函数是用一个已存在的对象去构造一个不存在的对象,也就是初始化一个对象,而赋值运算符重载函数是用一个存在的对象去给另一个已存在并且初始过的对象进行赋值。

比如:String s1("hello"),s2=s1;//拷贝构造函数
Sring s1("hello"),s2;
s1=s2;//赋值运算符重载

所以答案很明显是 拷贝构造函数

6.下列代码 将打印出:

#include <stdio.h>

int main(int argc, char const *argv[])
{
int a[] = {,,,,,,,};
int *b = a;
b+=;
if(*b % ) b+=;
printf("%d\n", *b);
return ;
}

A 0  B 3   C  5  D  7

答案:5  显而易见!

7. 如下代码会输出:

#include <iostream>
using namespace std; class Echo{
public:
Echo(){cout << "+";}
~Echo(){cout << "-";}
}a; int main(int argc, char const *argv[])
{
cout << "s";
Echo e;
return ;
}

A: +-s+-
B:   +s+--
C:  s+-
D   s+-+-

当时想选s+-了,之后发现其他三个答案都有双+双减法,一定是看漏了什么,才发现,原来有个小a在class {...} 后面,这样考的是两个构造函数加析构函数和输出s 之间的顺序,应该是B.

8.关于数据库的题目,貌似是不会用到索引的是哪一项。果断放弃,不说原因。

9. 以下不是操作系统的进程调度算法的是?

A 轮转法  B 最短CPU运行期优先调度算法    C 先进先出算法  D 电梯式调度算法

果断选电梯了,因为这名字太土啦。 刚学操作系统,还没有讲到调度,不过有看过一点书,而且腾讯面试问到我关于调度,由于刚学操作系统,还没学到调度,所以惨败在操作系统当中。

10. 二叉树遍历,给你前序中序,求后序,这种数据结构题目就不提了。

11. C代码中整数不能是用哪种进制表达?

A 2进制  B 十六进制  C 十进制  D 八进制

C语言中不能表示二进制,八进制用零开始的数字表示,如032,十六进制用0x开始的数字表示,如0x3f

12. 阻塞的 accept 返回发生在三次握手的哪个阶段?

A 服务端收到客户端的SYN
B 服务端发出客户端SYN的ACK
C 服务端收到客户端对SYN的ACK
D 客户端收到服务端的SYN和ACK

第一次握手:客户端发送syn包(syn=j)到服务器。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接
这题目是不是有问题??没选项呀。发生在三次握手之后,只能选第三个阶段了。

13. 以下说法错误的是?

class Widget{
public:
Widget();
Widget(const Widget &rhs);
Widget& operator = (const Widget &rhs);
}; bool foo(Widget w){
.....
} Widget w1 //语句1
Widget w2(w1); //语句2
w1 = w2;
foo(w1);

A 语句1调用 Widget();
B 语句2调用 Widget(const Widget &rhs);
C 语句3调用 Widget& operator=(const Widget &rhs);
D 语句4调用 Widget& operator=(const Widget &rhs);

这道题目应该还是考拷贝构造函数,赋值重载函数,语句1调用了构造函数,语句2调用了拷贝构造函数,语句三是利用了赋值运算符重载函数,语句4是什么东东?貌似是调用了拷贝构造函数。排除法选D

14.请给出func(65535)的返回值

int func(intx){
int countx = ;
while(x){
countx++;
x = x&(x-);
}
return countx;
}

A 65535  B 65536  C 15  D 16

这道题目出自K&R《程序设计语言》课后题 2-9,今年暑假有做个这个练习,  x&=(x-1) 是求x转化为2进制中1的个数,所以是16.

15. 请给出下面程序在32bit 小端机器上的输出?

#include <stdio.h>
typedef union{
char a;
char b;
int c;
}Demo; int main(int argc, char *argv[]) {
Demo demo;
demo.a = 'a';
demo.b = 'b';
demo.c = 0x64636261;
printf("size:%zu a:%c b:%c \n", sizeof(demo), demo.a, demo.b);
return ;
}

这题目出题有问题,没有正确答案。如果一定要选一个,应该是B

A size:4 a:  b:a  c:b
B size:4 a:  b:a  c:a
C size:4 a:  b:d  c:c
D size:4 a:  b:d  c:d

虽然题目有问题,但它还是很经典的题。考了大小端模式,大端模式地址的增长顺序与值的增长顺序相同,小端模式是与值的增长顺序相反
例如 : 0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
在大端模式下,前16位应该这样读: e684
在小端模式下,前16位应该这样读: 84e6

不过如果站在出题的人的角度上,答案应该是 B,代码错误应该打印c ,应该是 a:a b:a c:a

#include <stdio.h>
typedef union{
char a[];
int c;
}Demo; int main(int argc, char *argv[]) {
Demo demo;
// demo.a = 'a';
// demo.b = 'b';
demo.c = 0x64636261;
demo.a[] = 'e';
printf("%d\n", sizeof(char));
printf("size:%zu a:%c a:%c a:%c a:%c c:%c\n", sizeof(demo), demo.a[], demo.a[], demo.a[], demo.a[], demo.c);
return ;
}

16. C语言的设计发明者是 ?

A. Dennis Ritchie
B. Brian Kernighan
C. John McCarthy
D. Bjarne Strou-strup

答案是A,《C程序设计语言这本书》就是C语言的爸爸写的。Brian Kernighan也是其作业,但是没有参与C语言的研究,AWK 和 AMPL 编程语言的作者就是Brian Kernighan. John McCarthy是发明Lisp语言的作者,Lisp语言的强大是C无法比拟的。Bjarne Strou-strup是C++的发明者。变态呀。发明出如此变态的语言。

17.下列STL容器中,逻辑上相邻的两个元素,内存上必然相邻的是?
A vector   B set  C list   D map

vector 是一个能够存放任意类型的动态数组的容器,内存应该相邻。
set 实现采用了红黑树的平衡二叉树,因此内存不一定相邻
list 是链表结构,map是 key value 键值对,因此也不一定相邻。

18.下列代码片段正确的是:

A int a, &b;b=a;     B . int arr[][] = {{11, 2} ,{0}};
C typedef void x(int, double);
D const int s; int arr[s] = {0};

A中 b没有定义,&b是b的地址 .
B中 定义二维数组貌似前一个括号内是有数字的。这个编译百分百错误。就算是python 也不可以这样写。
C 编译是没问题的。我认为是正确的。只是很少有人这么用。
D  const int s 后面应该赋值,假如 const int s = 1 应该是正确的,没有赋值的话编译不会通过。

19. 一个模版函数定义为:

template<typename T1, typename T2> void foobar(T1 a, T2 b=0);
则下列调用语法错误的是:
A foobar <int , int>(1,2)   B foobar(1, "c");   C foobar<double, double>(1.1,2);  D foobar(1);

当时学JAVA的时候记得 模版就是泛型,可以代替  任意变量 例如 int  double 等等,但是变量不能为一个,毕竟声明2两个 T1 T2 ,所以D 显然是不对的。

每次笔试遇到C++,都很头痛。

20. 一下程序输出是什么?

#include <iostream>
using namespace std; class A
{
public:
A(){printf("A");}
virtual ~A(){printf("~A");}
}; class B:A
{
public:
B(){printf("B");}
virtual ~B(){printf("~B");}
}; class C
{
public:
C(){printf("C");}
~C(){printf("~C");}
}; class D:B{
public:
D(){printf("D");}
~D(){printf("~D");}
C c;
}; int main(int argc, char *argv[]) {
D d;
return ;
}

A.  ABCD~D~C~B~A
B.  ABCD~A~B~C~D
C.  ABDC~C~D~B~A
D.  DCBA~A~B~C~D

这道题目选的是A ,这道题目用到了虚函数,我不是很理解,一会在讨论虚函数。之后补充

二:多选题  (漏选不得分)->尼玛这不坑人么?阿里巴巴 选错还反扣分,更无语。

最近很多题目要注意32Bit  64bit 毕竟有些题目设计操作系统的话,答案是不同的。

1.又是一堆代码,吃完晚饭在写。。。。待续。。

笔试总结篇(一) : 广州X公司笔试的更多相关文章

  1. 大IT公司笔试

    都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但 ...

  2. 关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答

    关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答 @驰骋工作流,ccflow周朋 周总早, ccflow 功能很强大,在体验过程中,以下几个问题需沟通下: 先使用.net 再使用java ...

  3. DIY时钟类--广州百田笔试之一

    2014.05.30 武汉华科大活 题目:(原题不记得,大概回忆)用户输入一个时间,输出下一个时间 这个小题看似不难,实际处理起来对date的处理稍微繁琐,每月有30,31,28,29(闰年的判断)天 ...

  4. 某国际知名IT公司笔试

    原文地址:http://blog.csdn.net/lazy_tiger/article/details/1790986 这段时间没怎么顾及自己的这个“一寸土地”, 实在惭愧.因为这些天小弟又经历了“ ...

  5. [java面试]宇信易诚 广州分公司 java笔试题目回忆录

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/28479895 作者:sushengmiyan -------------------- ...

  6. 【IT公司笔试面试】75道逻辑推理题及答案

    [1]假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有 ...

  7. [java面试]宇信易诚 广州分公司 java笔试题目回顾录

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/28479895 作者:sushengmiyan -------------------- ...

  8. iOS体会篇 大学编程到公司的过程

    原文作者:朱众 授权本技术博文转载. 刚进公司时,在你正式动手写代码前,很可能要理解code base.这一过程至少持续1个月,取决于你所在项目的规模.你会发现你不得不使用你浑身所学之能事,理解上古程 ...

  9. tfjob的一篇文章,跟公司内使用方式类似

    可以看一下这篇文章: https://yq.aliyun.com/articles/600601?spm=a2c4e.11153940.blogcont602109.12.2e241125zH1kNB

随机推荐

  1. Chromium Graphics: GPUclient的原理和实现分析之间的同步机制-Part I

    摘要:Chromium于GPU多个流程架构的同意GPUclient这将是这次访问的同时GPU维修,和GPUclient这之间可能存在数据依赖性.因此必须提供一个同步机制,以确保GPU订购业务.本文讨论 ...

  2. 框架搭建资源 (一) V(视图)C(控制)模式

    pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodin ...

  3. JS function立即调用的几种写法

    //立即执行 (function () { alert(1) })() //立即执行 !function () { alert(1) }() //立即执行 +function () { alert(1 ...

  4. uva 12003 Array Transformer (大规模阵列)

    白皮书393页面. 乱搞了原始数组中.其实用另一种阵列块记录. 你不能改变原始数组. 请注意,与原来的阵列和阵列块的良好关系,稍微细心处理边境.这是不难. #include <cstdio> ...

  5. ASP.NET 5- 1

    ASP.NET 5 入门(1) - 建立和开发ASP.NET 5 项目   ASP.NET入门(1) - 建立和开发ASP.NET 5 项目 建立项目 首先,目前只有VS 2015支持开发最新的ASP ...

  6. PHP的垃圾回收机制详解

    原文:PHP的垃圾回收机制详解 最近由于使用php编写了一个脚本,模拟实现了一个守护进程,因此需要深入理解php中的垃圾回收机制.本文参考了PHP手册. 在理解PHP垃圾回收机制(GC)之前,先了解一 ...

  7. 电脑报2014年第43期 pdf高清版

    电脑报2014年第43期 pdf高清版

  8. VS2015前端工具:NPM和Web Essentials

    VS2015前端工具:NPM和Web Essentials 1.写作背景 想在5月份前换个工作环境了,“检讨”一下自己混饭的技术水平和处世的人脉关系,觉得很不给力!为人方面,人各有志也就不纠结了,但本 ...

  9. 浅谈javascript性能-管理内存

    上次说到,javascript脚本到底应该放在哪里?用什么用处? 以下2点: 在Html.Body部分中的JS会在页面加载的时候执行.即-用户触发一个事件的时候执行的脚本.eg:onload事件... ...

  10. 第3章1节《MonkeyRunner源码剖析》脚本编写示例: MonkeyRunner API使用示例(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...