2014阿里巴巴校招内推面经

内推申请时间:2014年7月15日

面试时间:2014年8月2日

结果:悲剧了

注解:斜体表示是面试官问的问题


申请了内推以后,等了将近半个月的时间,就在以为没有消息的时候,电面降临了。

当时和女朋友、同学一起在帝都郊外自驾游中(当然当时我是个乘客),电话就在这个时间来了。

早晨9点左右,我在车的后面坐着,路上还算安静。


项目相关的事情

1.你做的哪个项目比较有难度,对你有挑战,你是如何解决的?

        a.我觉得比较有挑战的就是XXX项目,那个项目是从申请、制订计划、开发到最后的整理论文和文档,都是自己全程参与的,责任和压力相对来说大一些。

        b.本来以为项目是php后端开发的,但是这次需要一个比较好的演示效果,因此需要做一个基于bootstrap的前端界面,这对于我来说是一个新的,从未接触的内容,因此从时间的角度来说,难度和压力算是比较大的,好在最后解决了。

总结:这个地方准备的不好,一直没有当回事,一般都会通过这种方式来确定一个需要主要发问的项目,回去好好准备一下,顺便改改简历吧。

2.介绍项目的内容和框架,10人的团队分工是怎样的

        a.整个项目分为三个部分,blabla,介绍了一下整体的内容

        b.介绍我这负责部分的内容,采用相关的算法,面试官问我算法采用的什么模型,我忘了。

        c.我就说我是项目负责人,是这个模块的负责人

总结:我在介绍的时候有点问题,就是把项目说的太简单了,太谦虚了,虽然项目确实不咋地,但是就按照我这么说的话几乎是不占什么优势的,以为我这就是个CURD的转存数据库的东西(其实本来就是)。后来,其中他问我了说你这个算法采用的是什么模型,我说地含含糊糊,说是模型是在论文上写的,现在有点忘记了,唉,对于这个项目的准备实在是太草率了,这可是要主要说的项目啊

3.你们项目中的squid,memcache,nginx是怎么使用的

    电话里面试官一直说什么squid我都没听懂,这说明我对自己的项目是得多么地不熟悉哈。我最后说我们项目里的数据量没有达到很大,最后varnish和squid都没有用上,只是配置了。这些对话更加深了面试官对于我“仅仅是配置”的工作内容的判断。


技术方面:

1.如何查看某个进程占用的内存

我不会,然后我就说了个用ps 加上某个参数肯定可以,但是我忘了是什么参数。我嘴贱然后又说了free,结果人到时候问我free这个命令是干什么的,我又说的特别含糊。就用top吧,可以实时查看

相关的链接在这里:http://www.cnblogs.com/gaojun/p/3406096.html

2.栈的特点,stl里面的栈是怎么实现的?实现一个最大栈,如何设计测试的数据

第一问很简单,我就说是Lifo,我以为就这样简单地完了,后面我傻呵呵的说了只要实现相应的方法,pop,top,empty之类等等的。最后我补了一句,简单的int类型的可以使用一个数组和游标来模拟一个栈。

第二问,我说我不懂,他说没关系,唉。

http://blog.csdn.net/mdl13412/article/details/6647793

看了这篇博客,我感觉他其实是想问的有两点:

1.stl的stack内部是用deque来实现的

2.内部数据的形状如下:

  1. // 栈底                      当前栈顶                         预留的内存边界  

  2. // ↓                            ↓                                 ↓  

  3. // --------------------------------------------------------------------  

  4. // |   |   | ...... |   |   |   |   |   |   |   | ......  |   |   | X |  

  5. // --------------------------------------------------------------------

添加修改版--来自C++ Primer

stl里面的stack是一种容器适配器,属于一种适配器(容器适配器,迭代器适配器,函数适配器)

其他容器适配器还有queue,priority_queue两种

第三问就是所谓的算法题了。我在剑指offer上看到了,心中窃喜,直接答了说用一个辅助栈来维护最大值,当大于等于的时候就把元素也推到辅助栈里。

这没有完,面试官让解释为什么等于要这么处理,我在车上回答的特别慌乱,而且本身也不善于在这种情况下思考。面试官引导我说你已经把关键字说出来了,就差组成一个完整的句子了,说如果这种你不能坚持去思考解决问题,我怎么敢雇你呢。最后冷静了一下,坚持把这个说完了。

他又发问,那么假设这个数组重复元素非常多的话,这种方法是非常没效率的,怎么来解决呢?我说用hash表来存储元素和次数,这样重复的元素就不用忘里面放而占用时间了。

然后问我c++里哪些容器是实现hash表的,我说了map和unordered_map。他说你这个地方用这么复杂的数据结构没有必要。

然后我说可以用一个struct来表示这么一个结构,作为辅助栈里存放的元素,但是他说这样还是不好,然后我就想不出来怎么办了。

第四问,我就搞了一些说什么输入的数据直接溢出(面试官搞了半天没搞懂),重复非常多的数据,空值之类的,我感觉他不是很满意

测试用例的面试官问的意思我完全给miss了,附上剑指offer上的原文:

1.新元素的比之前的最大值小

2.比之前的最大值大,应该还有等于的时候的处理

3.弹出的是最大的元素

4.弹出的是不是最大的元素

{主要是没搞清楚要问的啥}


把我自己写的答案附上吧:

template <typename T>
class simplePair{
public:
	int val;
	int count;
	simplePair(int x) : val(x), count(1) {}
};

template <typename T>
class maxStack{
public:
	void push(const T& val)	{
		if(assistant.empty() || val > assistant.top().val){
			simplePair<T> pair(val);
			assistant.push(pair);
		}
		else if(val == assistant.top().val)
			assistant.top().count += 1;
		data.push(val);
	}

	size_t size()	{return data.size();}
	void pop()	{
		if(data.empty()) return;

		const T cur = data.top();
		if(cur == assistant.top().val){
			assistant.top().count -= 1;
			if(assistant.top().count == 0)
				assistant.pop();
		}
		data.pop();
	}

	T max(){
		if(data.empty()){
			T tmp;
			return tmp;
		}
		return assistant.top().val;
	}

	size_t assistant_stack_size(){
		return assistant.size();
	}
	
private:
	stack<T> data;
	stack<simplePair<T> > assistant;
};

最后:

后来问了问我想去哪个bu,说为什么要报测试开发这个职位。这些就不详细说了,都是自己随便扯的。

总结:但是事实证明,如果能把这个问题好好准备一下,也能留下好印象的,只是我实在是太2了,准备的时候还是没多想,就是傻呵呵的看面试宝典了,看那感觉基本都没啥用。


他说我的问题问完了,下面你问我一个问题吧:

我问了说如果有机会的话今年能去实习么?他答说如果拿到offer的话自然是可以的,但是我没有了。


准备的时候还是要有条不紊,不急不躁,相信等待是一个人最需要拥有的品质,而我正在一边练习一边实践之中,just waiting for a chance.



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值