笔试总结篇(一) : 广州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
随机推荐
- Git 命令速查表
Git 命令速查表 1.常用的Git命令 命令 简要说明 git add 添加至暂存区 git add-interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 ...
- win8 64位使用plsql developer连接oracle数据库问题
问题:win8的64使用位系统plsql developer本地连接oracle莫名其妙的问题发生在数据库时.错误消息框,甚至可能是空的. 原因:它表示,互联网,的原因,预计在64位系统安装在64位O ...
- 网络资源(6) - EJB视频
2014_08_24 http://v.youku.com/v_show/id_XMjE0NjE3MDA0.html?f=5227828 01_EJB3.0_下载安装与运行jboss -------- ...
- Linux命令学习篇0——原产地
昨天在用curl发送简单的HTTP请求做測试的时候发现自己每次使用的时候都是在网络上查看别人的演示样例才干想起来怎么用,这样效率太低了.尽管有网络依旧在,可是总感觉不是被自己掌握着,心里不踏实,回忆起 ...
- linux_shell_获取日期相关
shell里直接调用系统变量 获取当天日期`date +%Y%m%d` 获取昨天日期`date -d yesterday +%Y%m%d` 获取前天日期`date -d -2day +%Y%m%d` ...
- android ndk通过遍历和删除文件
在做移动开发过程,难免有些本地文件管理操作.例如,很常见app随着微博.微信要清除缓存功能,此功能是走app文件夹.然后删除所有缓存文件.使用java的File类能够实现本地文件遍历及删 ...
- SOA一些资料
SOA相关资料整理分享 2015-03-26 16:16 by 蘑菇先生, 693 阅读, 9 评论, 收藏, 编辑 昨@幸福框架同学问能否推荐SOA一些资料.想想之前看过不少资料文档,就整理分享下. ...
- Access to the temp directory is denied. Identity 'NT AUTHORITY\NETWORK SERVICE' under which XmlSerializer is running does not have sufficient permiss
造成错误的原因是用bat代码清理系统垃圾时造成的权限丢失而引起的 错误描述 1.An error occurred creating the configuration section handler ...
- JVM相关知识(1)
1.JVM内存管理的机制 内存空间划分为:Sun JDK在实现时遵照JVM规范,将内存空间划分为堆.JVM方法栈.方法区.本地方法栈.PC寄存器. 堆: 堆用于存储对象实例及数组值,可以认为Java中 ...
- Android性能优化:谈话Bitmap内存管理和优化
最近除了那些忙着项目开发的事情,目前正在准备我的论文.短的时间没有写博客,今晚难得想总结.只要有一点时间.因此,为了凑合用,行.唠叨罗嗦,直接进入正题. 从事Android自移动终端的发展,想必是常常 ...