某公司面试的2道C语言题+吐槽.

What I write, what I lost.

吐槽下之前YY公司的面试.
此公司的面试一般在周六周日, 面试需要全天. 管中午饭哦.
能猜到是什么公司么?

先说下此次有关C语言的题目. 以方便想跳过此段或者阅读此段的路人.
1.机试.
单链表的反转.
限定30分钟.
void* converse(TagList** head);
其他的周边结构体定义, 测试函数, main都已经有啦.
刚才重新写一下. 包括 converse + (周边结构体定义, 测试函数, main). 20分钟.

周边:

View Code
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>


#define ASSERT assert


struct _taglist_t
{
int value;
struct _taglist_t* next;
};
typedef struct _taglist_t taglist_t;


void converse(taglist_t** head)
{

}


void check(void)
{
taglist_t* node1 = (taglist_t*)malloc(sizeof(taglist_t));
node1->value = 1;
node1->next = NULL;

taglist_t* node2 = (taglist_t*)malloc(sizeof(taglist_t));
node2->value = 2;
node2->next = NULL;

node1->next = node2;

taglist_t* head = node1;

converse(&head);

taglist_t* node_print = head;
while(node_print != NULL)
{
printf("%d ", node_print->value);
node_print = node_print->next;
}

printf("\n");
}

int main()
{
check();


return 0;
}

vonverse:

View Code
void converse(taglist_t** head)
{
ASSERT(NULL != head);

if(NULL == *head)
{
return 0;
}

taglist_t* node_listadd = (*head)->next;
*head = *head;
(*head)->next = NULL;
taglist_t* tmp_head = *head;

while(NULL != node_listadd)
{
*head = node_listadd;
node_listadd = node_listadd->next;
(*head)->next = tmp_head;
tmp_head = (*head);
}
}

可是笔试的时候写converse用啦40分钟. 只能吐槽自己的水平啦.
看到VC6的IDE就开始紧张.(teminal呢, vi呢, Makefile怎么写啊.).
然后就悲剧啦. 8分钟写完. 10分钟怀疑YY公司在测试函数中捣乱. 20分钟冷静调试后完成.
写这么个东西居然用啦40分钟. 我只能吐槽自己.


2.技术面试时, 给一个有网络路由应用场景的题目. 结果只能说看不懂.
然后换啦一个题目.
打印字符串. 1.打印成金字塔形式(第一行1个, 第二行3个, 第三行5个). 2.大写的要转化成小写.
刚才重新写的.
面试当时getlevel没有实现, 原因我居然说是忘记取平方根的函数名.

重写的:

View Code
#include <stdio.h>
#include <string.h>
#include <assert.h>


#define ASSERT assert

/*取需要打印的层数.*/
static int getlevel(size_t len);

void charprint(const char* str)
{
ASSERT(NULL != str);

int b_finished = 0;
size_t len = strlen(str);
int level = getlevel(len);

int level_cur = 1; /*当前打印的层数.*/

const char* pstr = str;

while((level_cur <= level) && b_finished == 0)
{
/*打印level-level_n个空格.*/
int i = 0;
for(i=0; i<level-level_cur; i++)
{
printf(" ");
}

/*打印 (level_cur-1)*2+1 个字符.*/
for(i=0; i<(level_cur-1)*2+1; i++)
{
char chp = *pstr;
pstr++;

if(chp == '\0')
{
b_finished = 1;
break;
}

/*大小写转换.*/
chp = (chp>='A' && chp<='Z') ? (chp-'A'+'a'):chp;
printf("%c", chp);
}

printf("\n");
level_cur ++;
}
}

int main()
{
const char* str[] = {"", "A", "Ab", "abC", "abCd", "abcZx", "abCzX1", "abCZx12", "abXZx12N", "AAAAAAAAA", "123XYZxyzA"};
int i = 0;
for(i=0; i<sizeof(str)/sizeof(const char*); i++)
{
printf("==========================================[%s].\n", str[i]);
charprint(str[i]);

}

return 0;
}


int getlevel(size_t len)
{
int level = 0;
int i = 0;
for(i=0; i<(1<<15); i++)
{
if(len > i*i && len<=((i+1)*(i+1)))
{
level = i+1;
break;
}
}

printf("level = %d .\n", level);
return level;
}

 

=============================================================================================

华丽的分割线
=============================================================================================

说下面试过程好啦. (最近有点给acfun"毒害". 超喜欢里面一些人的言语. 所以事先申明本人已经是大叔啦.)
1.填表. (为什么每次都填啊. 郁闷.)
2.机试. (上面有表述.)
3.技术一面.
让我表述下这2年的开发工作作些什么.
表达出自己作的事情, 但是涉及到的技术没有表达出来. 这方面的能力确实很差.
要是面试官不会引导的话, 就直接悲剧啦. 之后随便聊啦下关于upnp的一点了解.
面试官好像对我作的项目完全无兴趣了解. 无奈下让我作个题目.一个有网络路由应用场景的题目. 结果只能说看不懂.
然后换成打印字符串的题目. 认真的finish. (但是getlevel没有实现.)
悲剧.
4.人资综合素质面.
主要是问一下个人资历相关的东西. 面试官很nice. 答起来慢慢不紧张啦.
一直有强调想作一个纯粹的技术人员的想法和压力.
最后我问啦下关于面试的流程后. 他说啦些鼓励的话.
感谢.
5.群面.
大概到16:00啦. 最后一组群面. 4个人. 2个软件, 1个结构, 1个翻译MM.
首先是30s的自我介绍.
主题目是 唐僧四师徒, 谁最适合作销售. 4个人讨论5分钟. 我没有插上几句.
其中问到是否关于该公司的文化.
群面当然是天然呆啊.
6.网测.
感觉比较科学点的网测. 凭感觉. 无他法.
7.主管面.
已经到18:00多啦. 人资MM都买来KFC.
主管面的时候居然找不到我的资料(......). 然后主管面试官就说先聊下, 等下填资料就可以.
随便问啦下个人简历, 不到10分钟. 无涉及任何技术内容.
8.人资MM收证件.

话说此时我觉得挺矛盾:
1.收证件是一个好的现象. 有戏?
2.技术方面的东西就考这2个题, 有戏的话才对不起该公司的技术形象.

于是个人心情在有戏和有戏才怪之间煎熬.
终于昨天说到 reject 的短信. 很好. 又有点难受.
===========================================================================================
这公司看来只能作为一个可望而难及的概念啦.(群面什么的最讨厌啦.).
话说有没有人帮忙说下你知道的技术方面比较好的公司. Linux C/C++方向的. (什么google啊, IBM之类的免啦.).
感激.

===========================================================================================




你可能感兴趣的:(C语言)