社团技术面试面试题准备
最近加入了我们学校的创维维生素俱乐部,担任后端组的代理组长。马上就要开始招新了,老大让我准备一下面试要的技术方面的题目。
因为过来面试的都是大二大三的学生,专业、基础都不太一样,所以要准备多种类型不同难度的题目,但是都只涉及基础,而且因为这些题目会提前发给他们,在面试前他们是可以在网上搜索答案的。主要还是看面试者的态度,毕竟不管基础怎么样招进来也是一起学习的。
目前准备的主要有一下几个方面的题目:
1. 算法(讲解算法的思想以及流程)
在n个数中获取最大的那个数
private static int maxNum(int[] n){
int max = Integer.MIN_VALUE;
for(int m : n){
if(max < m) max = m;
}
return max;
}
写一个程序计算1到n的阶乘
pirvate static int factorial(int n){
if(n == 0) return 1;
else if(n < 3) return n;
return n * factorial(n-1);
}
跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
private static int JumpFloor(int target) {
if(target == 1) {
return 1;
}else if(target == 2) {
return 2;
}else {
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
2. 对编程语言的理解
你认为编程语言对开发者来说是什么?
编程语言对于开发者来说就是一个工具,不同的编程语言适用于不同的环境以及不同的需求。
面对对象和面对过程有什么区别?
面向过程是分析解决问题的思路,一步一步的解决具体的问题。面对对象是对事物的抽象,为具体对象赋予行为,抽象、封装、继承和多态…。
好的代码应该有什么样的特征?
易于阅读(变量和函数的命名)、结构清晰、简洁、可拓展性、健壮性、有良好的注释
3. 对开发的基本了解
release和debug的区别?
release是“发行”的意思,Release 版本就是最终交给用户的程序,编译器对它进行优化,以提高执行效率,虽然最终的运行结果仍然是我们期望的,但底层的执行流程可能已经改变了。
编译器还会尽量降低 Release 版本的体积,把没用的数据一律剔除,包括调试信息。
最终,Release 版本是一个非常纯粹、为用户而生的程序。
Debug 是“调试”的意思,Debug 版本就是为调试而生的,编译器在生成 Debug 版本的程序时会加入调试辅助信息,并且很少会进行优化。(答案来自https://www.cnblogs.com/taiyonghai/p/6126074.html)
你知道版本控制工具吗?版本控制工具在开发中起什么样的作用?
git、svn、hg、cvs…
- 记录和跟踪项目中各文件内容的修改变化。
- 多人协作中方便项目的管理和协同开发。
4. 开放性的问题
你有参加过什么项目吗,比如C++实训或其他的实训以及其他参加比赛的项目,讲一讲你的收获或你遇到的问题。
你有搭建过服务器吗,和我们分享一下你的过程和收获。
5. 面试问题
加入创维维生素俱乐部,你对自己有什么要求吗?
跟着学习、积累项目经验、…
目前想到的就是这么多了,各位大佬有什么意见的可以和我提。
往后应该还会有更多的题目。