思科实习面试经验贴--第一次面试

题记: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
{
     int x;
     char y[ 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Frank范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值