方正

方正真大牌,投简历过去后,过了快两周时间才通知我过去面试。而且不靠近地铁,面试一趟真郁闷。。。

 

方正一面就是做题(笔试题和上机题)。笔试题可真牛,共40道题,基本涵盖了大学所有内容(连物理题都有),我有一半不会做,就空着,反正这些题,后来面试官也不问(发现了吧,其实就是考察你的态度)。说说非选择题吧

1、  考察sizeof

2、  内存分配(就是林锐《高质量c/c++编程》里面说的)

3、  写一种排序算法(写了冒泡)

4、  翻译(终于能看懂,呵呵)

其他的记忆不是很清楚了,反正题目很杂,但是都很简单。

 

做完题目,等了一会来了一位老师(没错,方正里面称呼领导都是某某老师,这位据说是技术总监)。笔试题果然不看,就是问工作情况,了解过后,技术总监没有问我关于技术方面的问题,倒是非常感兴趣在项目中是如何处理一些棘手的问题。以下就是两道面试题。

1、  如果在项目中,你预估完成模块的时间是两个月,但是项目经理要求一个月完成,你是如何处理的?

这个其实在工作中经常遇到,加班是正常的,但是只是默默地选择加班,那样是不适合项目开发的。在这里,我以自己的版本管理模块作为例子说明了我对这样情况的处理。

首先我会将模块进一步分解,版本管理模块流程分为网传版本数据、版本更新、版本加载。这里面版本更新和版本加载是固定模式,其逻辑相对简单而且必须实现,其时间评估的把握相对容易些。现在网传版本数据就会较复杂的情况,首先网传有可能是TCP被动传输(面向中小型用户)、ftp主动下载(面向使用服务器的大客户)以及usb/uboot本地更新(万不得已是由技术支持人员现场更新)。这里面都要实现是十分困难的,因此要确定优先级。通过和项目经理交流后,我们可以确定tcp网传为首要任务,usb次之,ftp最后。确定后,再将每种任务所耗费的时间进行评估(首要任务的时间评估一定要有把握,其他的可以向项目经理申请延迟)。对于项目经理来说,强硬要求你完成艰巨的任务只能说明他不成熟(你可以不用理会,时间划分好以后说明你已经尽到风险提示的义务了,开发出不成熟的产品是两败俱伤),一般来说,项目经理此时已经对你模块的开发所可能耗费的时间以及可能产生的风险都胸有成竹,他会在比较之后对你的工作进行下一步安排(通常是强调要完成首要任务),这样项目才能河蟹。呵呵。

2、  如果在开发过程中,市场部对项目的需求发生了改变,你怎么处理?

这是一个很棘手的问题,对于需求变更我是深恶痛绝(因为有同样的事情发生导致我参与的项目没赶上好时光)。对于此,我的回答是,一、在模块的设计阶段,要对设计中存在的风险进行提示(这很难做到,不好判断);二、发生需求变更以后,要立刻修改设计,如果原来的设计微调能够容忍这种变更,那就执行这套方案(千万不要重新设计一个完美方案,时间不允许),同时对调整的时间重新评估并及时通知项目经理;三、如果原始设计已经无法满足,立即通知项目经理并展开新的设计(越快越好,而且项目经理了解到情况后很可能会想办法帮助你),对新的设计也要进行同样的时间评估及风险提示。

这很难有标准的答案,在软考里面的答案好像是记录需求变更(变更基线)、重新划分时间规划图确定关键任务等等(都快忘光了)。

 

面试完之后,感觉这位老师对我的回复还是挺满意的,接着是上机题,螺旋矩阵(没错,在微软考过的题,而且哥没去找答案,杯具。。。)。还好与微软不同得是,这位老师给我充足的时间思考,而且到机器上敲感觉就是不一样,居然让我想出答案了。呵呵这里面需要注意代码规范,要在细节处取胜。这位老师饶有兴趣的从3阶到9阶都测了一下。临走前问了一下我期望的工资,我说出来后感觉这位老师有点突兀,可能觉得我要的太多了(哎,哥又不是在读研究生,免费劳动力)。但他还是说不久后会通知我二面。

又倒腾的来到方正,很郁闷,自己其实心里有点不想去方正了,不过我还是抱着幻想大公司一般都有班车,这样比地铁更方便。

 

二面是三英会,两位老师加一位人事经理。这次面试有意思了,面试过程中对于我所涉及到的技术问题都没问(哥在介绍过程中特意强调了每个项目中涉及到的知识点)。两位老师最关心的问题如下:

一、你是如何将代码从windows移动到linux

无语了。。。这在中兴,平台工作是由一个科室专门完成了,你不可能指望我一个人完成吧,其实主要用c,操作系统的差异主要体现在线程、进程及锁、信号量。其实我就针对这四个差异做了处理,而且也是切合我开发的需要,非通用性的。(后来才知道他们根本没有嵌入式linux开发,正计划开展,就愁着怎么把windows的代码移植到嵌入式linux系统上)。

二、linux上的代码是用c++写的吗?

继续无语中,了解到他们的项目都是在windows上开发的,这也难怪了。我提出在嵌入式linux平台上要支持C++,在成本、资源、功耗等方面都会远超C开发,不是很建议在小型设备上使用C++,结果他们一愣,然后笑着说:“成本方面我们应该能承受”。呵呵,此时我的感觉是他们对嵌入式开发的了解可能还不如我,像是实战派遇上学术派了。不过他们说了一句有意思的话“可能会在嵌入式linux平台上用C开发”

三、关于软件开发流程

感觉在这方面他们都十分感兴趣(包括人事经理),了解到我是从中兴方面学习过来的,他们好像恨不得把我在这方面的经验和知识压榨的一干二净,不停的询问,做记录(难道哥是过来讲课的。。。)

 

面试结束,我问了一下要做的项目是什么以及有没有班车(杯具了,居然是北大校园到方正的班车。。),至此,心里也有数,我是不会去方正了。

 

 

你可能感兴趣的:(linux,工作,windows,面试,嵌入式,任务)