现在的位置: 首页 > 综合 > 正文

★ 程序员面试攻略

2013年12月08日 ⁄ 综合 ⁄ 共 3456字 ⁄ 字号 评论关闭
使用Aosu易博通,一分钱不花,实现网文自动摘抄, 博客写作方便又快捷,和您现在看到的一样 !自主嵌入Google广告,还能赚取美金! 现在就下载

 
 

1.       求职过程
2.       程序设计面试题的解答思路
对面试题不清楚的地方一定要问清楚,在编写代码的过程中应随时向考官解释你正在做的事情,写完程序后应该找例子验证自己写出来的代码,对解决方案的复杂性进行分析
3.       链表
P21头指针的修改,用c语言
//无法正确改变父函数里的指针
Int badinsert(element *head){
element *newelem;
……
head=newelem;
……
}
//正确的代码
Int insert(element **head){
element *newelem;
……
*head=newelem;
……
}

 
P49编写函数判定链表是否是循环链表
用快慢不同的指针对链表进行遍历,如果快指针到达链表尾则是非循环的,如果快指针超过慢指针,则是循环链表。
 
4.       树和图
5.       数组与字符串
6.       递归算法
面试例题 电话键单词
请编写一个函数,它以一个7位数的电话号码为输入,
把各种可能的单词--也就是能够用来代表给定
号码的字母组合--都打出来。因为电话上的“0”
“1”
按键上没有字母,所以你只需要把数字2-9转换
成字母。
*********************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define PHONE_NUMBER_LENGTH 7
int COUNT = 0;
/*********************************************
//
它以一个电话键数字(0-9)和一个位置序号(1 2 3)为输入参数,返回该数字按键
//
上指定序号相对应的字母。比如说,getCharKey(3, 2)将返回字母"E"--电话按键
//"3"
上的字母是"DEF",而"E"正好是这几个字母当中的第二个
*********************************************/
char getCharKey(int telephoneKey, int place) {
 
 switch(telephoneKey) {
 case 0:
  return '0';
 case 1:
  return '1';
 case 2:
  if (place == 1)
   return 'a';
  else if (place == 2)
   return 'b';
  else
   return 'c';
 case 3:
  if (place == 1)
   return 'd';
  else if (place == 2)
   return 'e';
  else
   return 'f';
 case 4:
  if (place == 1)
   return 'g';
  else if (place == 2)
   return 'h';
  else
   return 'i';
 case 5:
  if (place == 1)
   return 'j';
  else if (place == 2)
   return 'k';
  else
   return 'l';
 case 6:
  if (place == 1)
   return 'm';
  else if (place == 2)
   return 'n';
  else
   return 'o';
 case 7:
  if (place == 1)
   return 'p';
  else if (place == 2)
   return 'r';
  else
   return 's';
 case 8:
  if (place == 1)
   return 't';
  else if (place == 2)
   return 'u';
  else
   return 'v';
 case 9:
  if (place == 1)
   return 'w';
  else if (place == 2)
   return 'x';
  else
   return 'y';
 default:
  return '#';
 }
}
/*****************************************
非递归算法
*****************************************/
int printTelephoneWords1(int phoneNum[]) {
 char results[PHONE_NUMBER_LENGTH + 1];
 int x[PHONE_NUMBER_LENGTH];
 int i;
 int level = 0;
 int count = 0;
 results[PHONE_NUMBER_LENGTH] = '/0';
 for (i = 0; i < PHONE_NUMBER_LENGTH; i++)
  x[i] = 0;
 
 while (level > -1) {
  x[level] += 1;
  if (x[level] < 4) {
   results[level] = getCharKey(phoneNum[level], x[level]);
   if (results[level] == '0' || results[level] == '1') {
    x[level] = 3;
   }
   if (level == PHONE_NUMBER_LENGTH - 1) {
    printf("%s/n", results);
    count++;
   }
   else {
    level++;
    x[level] = 0;
   }
   
  } else {
   level--;
  }
 }
 return count;
}

int main() {
 int str[
PHONE_NUMBER_LENGTH];
 str[0] = 4;
 str[1] = 9;
 str[2] = 7;
 str[3] = 1;
 str[4] = 9;
 str[5] = 2;
 str[6] = 7;
 //int count = printTelephoneWords1(str);
 //printf("count is %d/n", count);
 printTelephoneWords(str);
 printf("count is %d/n", COUNT);
 return 0;
}
 
7.       其他程序设计问题
面试例题:字节的升序存储和降序存储方式
字节的升序存储方案中最低位字节保存在最低位的地址里
字节的降序存储方案中最高位字节保存在最低位的地址里
以下函数升序返回1,降序返回0
Int endianness(void){
Int testnum=1;
Char *ptr;
Ptr=(char *)&testnum;
Return(*ptr);
}
Int endianness(void){
Union{
Int theinteger;
Char singlebyte;
}endiantest;
Endiantest.theinteger=1;
Return endiantest. singlebyte;
}
 
例题:请编写一个函数,把一个给定的整数的二进制表示形式的“1”的个数统计出来。
int NumOnesInBinary(int number)
{
 int numOnes = 0;
 while (number)
 {
  number = number & (number - 1);
  numOnes++;
 }
 return numOnes;
}
8.       与技术、测量、排序有关的智力题
9.       与图形和空间有关的智力题
一只狐狸在追一只鸭子,鸭子逃到了一个正圆形池塘的圆心位置.狐狸不会游泳,鸭子也不能在水面上起飞(这是一只有残疾的鸭子).狐狸的速度是鸭子的4.假设鸭子和狐狸分别遵循着最优的逃跑和追逐策略,请问:鸭子能不能安全地游到池塘边并起飞?如何能,怎么样才能做到?
设大圆半径为R
二小圆的半径分别为(4-∏)R/4 R/4,化简后约为0.21~0.25R
逃生方法:鸭妹在红色区间作圆周运动,狐兄亦在岸上作圆周运动(假设起跑时鸭与狐在同一直径上且距离最近),当鸭看到自已经过圆心与岸上的狐成一直线时,立即改变方向沿着半径的方向向岸上游去。
10.   计算机基础知识
11.   非技术问题
附录.写个人简历的方法 

 

 
今日热点:
  • ASP.NET2.0中全面实现文件图片上传下载处理
  • ASP.NET2.0 文本编辑器FCKeditor
  • Eclipse的Adapter机制
  •  
     
     

    抱歉!评论已关闭.