现场面试技巧
一、准备篇
1、进门
敲门 --> “两位老师,早上好!” -->(让坐下) --> “谢谢”
2、简单自我介绍:
i. 我叫**,来自中国科学技术大学;
ii. 在本科阶段,主要学习了计算机相关的基础课程,还有主修了一门java语言;
iii. 到了研究生阶段,没有进一步去研究java,转而进一步去理解了计算机系统,探究了Linux内核的运行机制;
iv. 当然Linux内核本身博大精深,到目前为止,我也只能算触及了冰山一角。但我感觉即使这小小的一角,对我认识新事物,学习新知识帮助很大。
以上就是我的自我介绍!
PS:
1)为什么你觉得学习Linux对你学习新知识帮助很大?
a. 因为,操作系统的话,在某种意义上,是这个时代,软件产业的一个精华!
b. 他的很多思想和管理机制,都可以被鉴戒到软件开发中来。
c. 同时,理解Linux的思想和管理机制,对认识现有的软件产物有很大帮助。
d. 比如说,最近我有在看jvm的实现机制,他的很多思想与Linux也有异曲同工之处,比如说内存管理,JVM中会堆,虚拟机栈,本地方法栈,--方法区,程序计数器等等这种概念,其实就是Linux分段的含义。
e. 但是他们也有区别,Linux在每个段中,会通过页框的方式,对内存进行管理。对内存的回收,本质就是对页框的回收。而JVM对内存的回收,主要是通过垃圾回收机制。——我觉得造成这种区别的很大原因是Java的面向对象机制;
f. 但自己目前Jvm这方面的资料看的比较少,还是有很多疑问,比如说JVM与操作系统的接口实现,等等,后期还会继续研究。
(如果问JVM的问题,不会,可以用Linux方面的知识去解释类似的问题)
2)
二、进行篇
1、项目
i. 介绍
这是导师的一个项目,主要是为了解决开车过程中,用手控制车载系统的不便,继而用语音代替,降低事故发生率。
系统主要分四个模块:1)语音识别模块;2)汽车运行数据动态显示模块;3)汽车后端设备控制和显示模块;4)MP3播放器模块;
分别介绍每个模块;
ii. 负责的部分
1. 系统整体框架的搭建----会画框架图!
2. 语音识别模块的实现(和另一个同学)
3. MP3播放器模块
iii. 遇到的困难?如何解决?
1. Linux下的识别率
2. C程序从Linux平台移植到Android平台
3. Android上的实现---1)触发方式-按下,抬起;2)识别线程(内部有采集线程)
iv. 两个小创新
1. 官方的英文版---->自己的中文版(声学模型、语言模型、字典)---后来网上找到了一个官方的大样本模型,但是其语言模型和字典都很大,中文匹识别率很低!------>有没有一种可能,我们只取其声学模型,丢掉他的语言模型和字典模型,然后根据自己的系统需求设计语言模型和字典。---->后来经过实践证明,是可行的。识别率能达到90%以上,基本满足使用需求。
2. 语音采集线程和识别线程分离。
A)按键抬起,采集完语音信号之后去分析?
B)按键抬起前,边分析已采集到的语音信号,同时又去搜集后边存在的语音信号-------------得到结果立即返回,不用等待按键抬起;
从用户体验的角度,我们选择了后者;
v. 两个探索:
1. 第一次探索语音识别
2. 第一次探索将Linux下的C程序移植到Android环境下;
vi. 三大收货
1. 快速学习、探索新事物的能力;
2. 正视问题、分析问题的能力进一步加强(易发现,但要有信心解决!)
3. 团队的合作意识和协调能力;
2、基础知识
i. 问的基础,回答要深。——>往Linux内核引!
ii. 问到不会的——>(说出相关会的,以及可以如何去学习它)---脚本
iii. 善于用举例子----回答问题
3、业务知识 ☆☆☆
i. Hadoop:
1. 安装(装过)
a) 单机伪分布安装
b) 集群分布安装
c) Cluster Manager
2. 工作原理
MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。
这里涉及到两个角色:
1)Job Tracker:其中一个Master
2)Task Tracker:都是slaves
在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。
需要注意的是,用MapReduce来处理的数据集(或任务)必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
---------------------当然数据都是以键值对的形式在流动。
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的。
保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存3份。
ii. Mapreduce
iii. HDFS
iv. Spark---论文上看到的---Sparrow,下一代Spark调度
v. Mesos---集群管理软件----听说可以管理CPU和Mem
vi. 自己的不足:
这个确实没有这方面的项目经验,对这方面的理解纯粹是自己感兴趣,然后去学的,学校也没相关的课程;
我算是一个兴趣至上的人,而这份兴趣来源于我的思考,我对它意义的理解。可能我会找到其他一份跟我项目关系更大的工作,但我觉得如果我不感兴趣,必定会碌碌无为。对自己感兴趣的东西,即使白天想,晚上想,吃饭想,走路想,都不会觉得累!我寻找的就是这份感觉。
前面面试老师---有没有潜力----差别也就一个月就能弥补
4、编写程序
i. 询问输入
1. 时间空间复杂度要求
2. 数据类型,数据范围(遇到其他类型,打印警告!)
3. 是否增修删数据?
4. 偶尔用(建简单做复杂) 经常用(建复杂用简单)、
-----会写代码!-----数组、链表、树
ii. 确定数据结构
1. 记录型:“临时变量” & “插针”;
2. 空间允许:添加新的数据结构
iii. 编写代码
1. 鲁棒性
2. 变量插针
3. 实现
三、结尾篇
1、请问你有什么问题?
有一个问题,希望老师能给一个像我这样即将踏入社会,实习工作的新人一点建议。以后实习工作的时候,应该注意什么?如何去成长?
2、结束语:
非常感谢两位老师的时间,谢谢! 再见~ 再见~
四、HR篇
1、如何学习?
a) 学习方法:发问式学习——>带着思考去学习
i. 为什么要学Hadoop?----用处、意义
ii. 要学Hadoop的哪些东西?----明确目标
iii. 怎么学这些东西?-----明确手段
1. 淘宝上搜一下Hadoop有哪些书?《hadoop权威指南》《Hadoop技术内幕》《Hadoop实战手册》-----下载所有可下载的PDF,或图书馆借------看书的介绍和目录----选择适合自己本阶段的一本书----目录整体把握,具体精细;
2. 逛论坛、博客,看前辈学习经验;
3. 论文
b) 学习态度:
i. 发现问题、正视问题、分析问题、解决问题-----挖掘兴趣,快乐学习!
ii. 忠于实践——尽信书不如不信书,尽信老师不如不信老师。
c)
2、自己优缺点------加入例子,生动形象化!
a) 缺点:
i. 不敢大胆放手去做,考虑太多,耽误时机——这也是女朋友对我的评价。
比如说,我很喜欢去旅游,但是计划一场旅行,我往往会花很多时间和精力,尽量去做的尽善尽美。比如上次去厦门鼓浪屿:每一个时间段去哪个景点,中间路线、花费时间、要吃的小吃,要拍的照,我都会一一记录下来。那次旅行,我还专门打印出来,时刻揣在手里。但有时考虑太多,女朋友就会说我墨迹,就因为这个,没有去成华山。
但同时,我觉得这也是我的一个优点——我认为自己算是一个比较细致的人。大学的时候,文法学院有一位老师让我帮他们学院修改PPT,一个章节一百多页给我100元。但是觉得这活不错,蛮简单的。但是后来发现,这起码花费我30个小时。因为我控制不住自己,去精心排版每一页,用PS处理每一张图,分析整个PPT的色调,会不会影响教学。
ii.
b) 优点:
i. 我一直是一个喜欢思考的人。我觉得,人之所以区别于动物,就是因为人会思考。同样,在社会中,不同的人,思考能力不同,取得的成就也不同。能不能思考,是否善于思考,很大程度上决定个人所取得的成就。
3、喜欢的事
a) 旅游——看自然风景:放空自我,融入自然,什么也不想的感觉;
b) 书——《程序员的自我修养》《编程珠玑》
c) 博客——陈皓
d) 论坛——about云社区;CSDN的云计算资讯专栏
e) 会议:
i. 第六届中国云计算大会将于5月20-23日在京隆重召开
ii. 2014年4月19日,中国Spark技术峰会将在北京中关村软件园国际会议中心举办。