前天笔试完,今天LZ就去面试了。地点什么的就不说了,直接上干货。
1:Leader:你有女朋友?(这也是程序员会问的?我感到有点突然。。。。)
Me::额 ,有
你女朋友来会来多益吗?
会啊。
你女朋在干嘛?
读书啊。好吧他就没问了。
2:你说一下你讨厌的人(LZ本生没讨厌过谁啊,怎么说,难道一定要讨厌别人才行?)
说一下你讨厌的性格。
高调的人吧。
完了?
恩。
3:解释下二位数组和一维数组寻址
二维数组与一维数组不同之处在于,a+i在二维数组里表示第i行数组的首地址,或者是&a[i][0],并且*(a+i)也表达了同样的地址(&a[i][0])。要想表达a[i][j]的地址,要么用a[i]+j,要么用*(a+i)+j,切莫用a+i+j(这是表示a[i+j][0]的地址)。
一位数组,a+2指的是a[3]的地址
4:说一下HTTP的连接过程。
直接上三次握手,四次挥手。 服务器预留资源等等
5:你知道设计模式哈?说一下常用的。
单例,工厂,观察者,适配器。 简单说了下
public class Singleton{
private static Singleton instance;
private Singleton(){
}
public static synchronized Singleton getinstance(){
if(instance == null){
instance = new singleon();
}
return instance;
}
6:c++虚函数的作用
LZ不怎么了解c=+
大概就是实现多态的,也就是java的抽象函数和接口之类的
7:解释下堆栈溢出。多半说的是c++,java的话也分本地方栈和虚拟机栈,一般就是jvm栈。
百度了下,大家可以看下:
一般每个进程的栈空间是限定的。(为什么限定?去学汇编和操作系统就知道)
什么占用栈空间?
除去系统栈占用外,基本就是栈变量。(什么是栈变量?无语¥%*&……%¥%&)
简单来说上面那个a就是栈变量。
修改有两个办法:
一 改为堆变量:
int* pa = malloc(sizeof(int)*1000*1000);
然后可以将pa当数组用。(数组和指针在C里基本等同)
当然,不用了记得free pa。
二 修改系统限制
这个栈变量= 1000*1000*4 = 4M。(约等于)
如果这个函数不频繁调用,也不递归,一般还是可以接受。
可以修改操作系统对进程栈空间的大小限制,稍微调大一些。
ulimit查看系统的限制。(*nix系统命令。不是windows的)
大概意思就是:
1.没有回收垃圾资源
2.层次太深的递归调用
但是在java中堆栈的应用是这养的
http://blog.youkuaiyun.com/chengyingzhilian/article/details/7781858
8:设计一下NPC处购买道具的过程
具体说自己的想法
9:怎么去写碰撞条件 准确的说是没有做过游戏开发
10:你有没有offer现在? 确实他们招的比较早,也是我第一家公司,所以我说没有
然后他说时间到了,拜拜了