★ 程序员面试攻略
来源:互联网 发布:mysql 注入攻击 编辑:程序博客网 时间:2024/05/01 17:38
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转换
成字母。
*********************************************/
请编写一个函数,它以一个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 '#';
}
}
/*********************************************
//它以一个电话键数字(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;
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;
}
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;
}
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;
}
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
逃生方法:鸭妹在红色区间作圆周运动,狐兄亦在岸上作圆周运动(假设起跑时鸭与狐在同一直径上且距离最近),当鸭看到自已经过圆心与岸上的狐成一直线时,立即改变方向沿着半径的方向向岸上游去。
二小圆的半径分别为(4-∏)R/4 和R/4,化简后约为0.21~0.25R
逃生方法:鸭妹在红色区间作圆周运动,狐兄亦在岸上作圆周运动(假设起跑时鸭与狐在同一直径上且距离最近),当鸭看到自已经过圆心与岸上的狐成一直线时,立即改变方向沿着半径的方向向岸上游去。
10. 计算机基础知识
11. 非技术问题
附录.写个人简历的方法
<iframe src="http://aosustudio.com.cn/ad/GoogleSerch.htm" frameborder="0" width="100%" scrolling="no" height="30"></iframe>
- ★ 程序员面试攻略
- 程序员面试攻略读书笔记
- 程序员面试攻略(读书笔记)
- 程序员面试攻略试题1
- 程序员面试攻略题2
- 程序员面试攻略题3
- [译]专业技术面试官首次分享:程序员面试通关攻略
- 程序员求职攻略(《程序员面试笔试宝典》)
- 面试攻略
- 程序员面试攻略——为2008年提前加油
- 二叉搜索树的经典问题-读《程序员面试攻略》
- 链表的几个经典问题-读《程序员面试攻略》
- 关于字符串的经典问题-读《程序员面试攻略》
- 设计模式大集锦 程序员面试全攻略
- 设计模式大集锦 程序员面试全攻略
- 设计模式大集锦 程序员面试全攻略
- 设计模式大集锦 程序员面试全攻略
- 设计模式大集锦 程序员面试全攻略
- ★ Ajax使用初步
- addteach aspx
- ★ asp.net中的联动菜单
- 解析CGI
- addteach cs 2
- ★ 程序员面试攻略
- ★ .Net2.0中通过委托和事件进行线程安全的控件访问
- ★ 流行的Ajax应用演示和源码下载
- 配置JDK与Tomcat
- E1知识
- Java2游戏编程读书笔记(11-2)
- .Net 技术文章转帖
- 如何学好编程
- 从本体的发展看图书情报学