笔试总结篇(一) : 广州X公司笔试
一.单选题:
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公司笔试的更多相关文章
- 大IT公司笔试
都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但 ...
- 关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答
关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答 @驰骋工作流,ccflow周朋 周总早, ccflow 功能很强大,在体验过程中,以下几个问题需沟通下: 先使用.net 再使用java ...
- DIY时钟类--广州百田笔试之一
2014.05.30 武汉华科大活 题目:(原题不记得,大概回忆)用户输入一个时间,输出下一个时间 这个小题看似不难,实际处理起来对date的处理稍微繁琐,每月有30,31,28,29(闰年的判断)天 ...
- 某国际知名IT公司笔试
原文地址:http://blog.csdn.net/lazy_tiger/article/details/1790986 这段时间没怎么顾及自己的这个“一寸土地”, 实在惭愧.因为这些天小弟又经历了“ ...
- [java面试]宇信易诚 广州分公司 java笔试题目回忆录
本文地址:http://blog.csdn.net/sushengmiyan/article/details/28479895 作者:sushengmiyan -------------------- ...
- 【IT公司笔试面试】75道逻辑推理题及答案
[1]假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有 ...
- [java面试]宇信易诚 广州分公司 java笔试题目回顾录
本文地址:http://blog.csdn.net/sushengmiyan/article/details/28479895 作者:sushengmiyan -------------------- ...
- iOS体会篇 大学编程到公司的过程
原文作者:朱众 授权本技术博文转载. 刚进公司时,在你正式动手写代码前,很可能要理解code base.这一过程至少持续1个月,取决于你所在项目的规模.你会发现你不得不使用你浑身所学之能事,理解上古程 ...
- tfjob的一篇文章,跟公司内使用方式类似
可以看一下这篇文章: https://yq.aliyun.com/articles/600601?spm=a2c4e.11153940.blogcont602109.12.2e241125zH1kNB
随机推荐
- AIX采用LV创ASM磁盘组
CREATE ASM ON AIX LV DEVICE OS:AIX 6100-03 ASM版本号 10205 # lspv hdisk0 000d295a6d68902b ...
- ubuntu14.04通过将语音,耳机没有声音
真正使用linux每天都有新的发现啊,截至今天上午有一台电脑,听几首歌.后插上耳机中没有声音.我认为这是一个糟糕的耳机,把插在手机耳机,我发现了一个语音耳机,很奇怪,我喜欢计算机接口是不是有问题,是在 ...
- Swift_3_功能
import Foundation println("Hello, World!") //声明函数 不带参数 无返回值 func func1(){ } //一个函数 传入两个Str ...
- AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】
原文:AES加密CBC模式兼容互通四种编程语言平台[PHP.Javascript.Java.C#] 由于本人小菜,开始对AES加密并不了解,在网络上花了比较多时间查阅资料整理: 先简单从百度找来介绍: ...
- Oracle表空间及分区表
(1) 表空间及分区表的概念表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应 ...
- oracle_constraint的用处
ql中constraint主要是增加约束 这个主要就是增加约束的 以下几种约束 .并 一一列举: 1.主键约束: 主键约束:就是对一个列进行了约束,约束为(非空.不重复)要对一个列加主键约束的话,这列 ...
- 深入理解PHP中赋值与引用
原文:深入理解PHP中赋值与引用 先看下面的问题: <?php $a = 10;//将常量值赋给变量,会为a分配内存空间 $b = $a;//变量赋值给变量,是不是copy了一份副本,b也分配了 ...
- Swift语言指南(八)--语言基础之元组
原文:Swift语言指南(八)--语言基础之元组 元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Hu ...
- UI 收集
semantic http://www.semantic-ui.com.cn/modules/reveal.html sbadmin http://startbootstrap.com/templat ...
- 引擎介绍 - REngine
引擎介绍 - REngine 规则引擎 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规 ...