今天面试,这家企业感觉还是很不错的,面试的过程总体还可以,去教室的时候有两个面试官,我以为搞定一个就够了,没想到两个都要面,两轮直接一起搞定,我先囧rz。
面试的过程整体波澜不惊,第一个面试官问了我一些项目上的问题,然后问了对职业规划的看法,这些都好说。
然后面试官微微一笑,那我们来做一道算法题吧。
瞬间Orz啊有木有。。。
诚心的说,这次给的这道题还算简单的,就是找矩阵中的路径数以及经过的和最大的路线,我告诉面试官第一个应该分层用广度优先来做,第二个应该用动态规划,至于具体怎么规划,那就不知道了。
面试官说那就OK吧,然后聊了一些别的问题,比如Rails框架的看法什么的就完事了。
第二个比第一个感觉更OK一点,先问了我的代码量,我表示没这个概念,但是我在HOJ上刷了有70来道题了,编程能力应该是没问题的。
然后面试官说,那好,既然你对自己C++有信心,那么我们来写一合并有序链表的算法吧。
哈哈哈哈哈,居然是链表,不是树啊图啊什么的简直是上天庇佑啊有木有,稍微构思马上写好。
然后面试官说,要是两个列表里有重复元素,你现在这个代码该怎么改。
轻松随意,立马搞定。
面试官看了看,没有评价,直接开始问别的问题了,那个,你说说HTTP有多少个状态码吧。
这玩意儿计算机网络学的早忘了啊,我只好说就记得404是not found,403是forbidden,其他的就不知道了Orz。。。
面试官微微一笑,好吧,那今天的面试就到这里吧,你又什么要问的么。
-我那个链表的代码是对的么?
-大致上没什么问题。
OK,搞掂,看来基础的编程能力还是可以的。
不过算法始终是硬伤啊。。。。。
~~~~~~~~~~~~我是萌萌的昏割线~~~~~~~~~~~~~
1518
: 题意就是判断一个算式如果数字都换为逆序数,算式还是不是成立。
需要注意的是,虽然0+0=0
是结束条件,但是仍然要输出一个True
。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
void getNum(char des[], char src[], int i, int j){
int k;
for(k = 0; j >= i; k++, j--)
des[k] = src[j];
des[k] = '\0';
}
int main(){
char input[50], num[50];
int num1, num2, num3, loc1, loc2;
while(scanf("%s", input) != EOF){
for(int i = 0; i < strlen(input); i++){
if(input[i] == '+')
loc1 = i;
else if(input[i] == '=')
loc2 = i;
}
getNum(num, input, 0, loc1 - 1);
num1 = atoi(num);
getNum(num, input, loc1 + 1, loc2 - 1);
num2 = atoi(num);
getNum(num, input, loc2 + 1, strlen(input) - 1);
num3 = atoi(num);
if(num1 + num2 == num3){
cout << "True" << endl;
if(num1 == 0 && num2 == 0 && num3 == 0)
break;
}else
cout << "False" << endl;
}
}
1522
:题意就是,A
代表顺时针旋转,V
代表逆时针旋转,输出得到的坐标。
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
char input[250];
int x, y, state; //state 1 up, 2 down, 3 left, 4 right
while(scanf("%s", input) != EOF){
x = 300;
y = 420;
cout << x << ' ' << y << ' ' << "moveto" << endl;
state = 4;
for(int i = 0; i <= strlen(input); i++){
if(state == 1){
y += 10;
if(i != strlen(input))
state = input[i] == 'A' ? 4 : 3;
}else if(state == 2){
y -= 10;
if(i != strlen(input))
state = input[i] == 'A' ? 3 : 4;
}else if(state == 3){
x -= 10;
if(i != strlen(input))
state = input[i] == 'A' ? 1 : 2;
}else if(state == 4){
x += 10;
if(i != strlen(input))
state = input[i] == 'A' ? 2 : 1;
}
cout << x << ' ' << y << ' ' << "lineto" << endl;
}
cout << "stroke\nshowpage" << endl;
}
}