题记:2015年1月22日,本人第一次技术类面试经历。两周前投的思科的实习,软件开发,在上海就招4个人。然后昨天HR打电话今天面试,下午2点钟和我同学到的思科,在漕河泾那边。
面试流程:有三个技术面,大部分问的技术,现在按照顺序流程简单记下。
一:第一个技术面
1 先让我介绍下最近在做的项目,然后拿着笔在板子上边讲边画。讲到项目的时候问了我一个线程和进程的问题,我说我程序中开启了两个线程,他问为什么不是两个进程??
2 问了个TCP和UDP的区别。以及为什么UDP有网络越来越差?以及TCP的窗口机制。
3 然后问我会不会,链表。我只是说了下,介绍下链表的基本概念什么的,但是要写代码的话就办不了了,然后后来,让我用冒泡法排序写一个比较一个字符串的字母大小,并且按照升序排列的问题,然后问我多长时间能写出来,我说大概15分钟,然后憋了半天。代码附上。最后他就叫了下一个人再问我:
代码:
/*
============================================================================
Name : WordsMax.c
Author : frank
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 100
void sort(char str[]){
int i,j;
int len = strlen(str);
char temp;
for(i = 0;i <len-1;i++){
for( j=len-1;j >=0;j--){
if(str[j]<str[j+1]){
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
}
int main(void) {
//puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
char str[MAX];
gets(str);
sort(str);
puts(str);
return EXIT_SUCCESS;
}
二:第二个技术面
这个技术面,是个比较年轻的小伙子,感觉还是比较和善的。
1 子网掩码的问题,问了如果是一个26位的子网掩码可以接收多少主机。
2 linux进程间的通信、配置网络的命令-ifconfig,用户态和核心态的问题。
3,cgi的网页是如何在浏览器中显示出来的。他说应该是print出来的。
4 c语言中双向链表,如果已经有个双向链表,升序排序,已经排序好了,我应该如何再去插入一个节点,写出思路;enum枚举类型、union联合体;这些部分是谭浩强版c程序设计里面后面的部分,当时也没学后面,寒假回家一定要学下。
5 还问了一个使用代码库,就是github的东西。确实还没用过,只是在上面下代码,最近一直想学下。
6 计算机网络的路由器和交换机分别工作在哪一层,然后路由器是干嘛用的;VLAN
三:第三个技术面
1 一上问我一个c语言的关键字:Volatile,这个确实没有遇到过。被虐了。
2 然后问我了一个c语言的题目,是交换一个string 的类型,反向输出,要求用比较不占用Buffer的方法。前后交换等
3 然后问了一个智力题。是:有两根绳子,材质都不均匀,我只知道这每根绳子是1个小时烧完, 问:我如何能够测算出时间是15分钟?
答案:半小时的话是对一根绳子两边一起烧。
4 问了一个大小端问题。这个真心听都没听过。通过代码检测系统是大端系统还是小端系统:
小端序:高字节存放于高地址,低字节存放底地址一般操作系统都是小端,而通讯协议是大端的。
大端序:高字节存放于低地址、
小端机器中:
union
X
{
intx;
chary[4];
};
union是联合体,也就是 int x; 和 char y[4];的首地址相同,给x赋值的同时改变了y数组的值
a.x=0x11223344;则两位16进制数是一个字节,所以
y[3]=44
y[2]=33
y[1]=22
y[0]=11
#include <stdio.h>
//#include <stdlib.h>
int main()
{
union check
{
int a;
char b[2];
}s;
s.a=0x1234;
printf("variable:%8s\t%8s\t%8s\n","s.b[0]","s.b[1]","s.a");
printf("address:%8p\t%8p\t%8p\n",&s.b[0],&s.b[1],&s.a);
printf("data:%8x\t%8x\t%8x\n",s.b[0],s.b[1],s.a);
if(s.b[0]==0x12)
printf("big\n");
else
printf("little\n");
return 0;
}
15分钟的是:两根绳子一根点燃1头A(1小时烧完) 另一根点燃2头B(半小时烧完) 等点燃2头的绳子B烧完就代表半个小时过去,这个时候只点燃1头的绳子A还剩下能燃烧半个小时的量,把A另一头点燃同时计时,烧完就真好15分钟。
哎。。。15分钟就是没有想到!!
然后就就玩完了。
总结:
第一次技术面,感觉收获还是蛮大的,对于通信方面做这些底层开发的网络公司,虽然要求C/C++,但是还是要求要C语言基础非常好,感觉就是对C语言的那本程序设计基础的最后的链表、Uion部分,还有就是Linux部分的进程控制,进程间通信;另外问的比较多的还有就是计算机网络的知识。路漫漫其修远兮,吾将上下而求索!加油吧!
下面这些问题是和我一起去的另一个同学问到的问题(写的比较简洁):
1. 数据结构一个问题,
2. 计算机网络,TCP协议某一段代表什么
3. 英语自我介绍
4. 判断一个程序是否合法,、
5. 简历项目介绍
6. 统计一二进制数字1的个数()
7. 字母交换顺序
8. 智力题
9. 操作系统问题
10. Linux一个问题
11. 编程Python
版权声明:本文为博主原创文章,未经博主允许不得转载。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com