1 面试流程

来源:互联网 发布:海南大学网络登录入口 编辑:程序博客网 时间:2024/06/05 14:56
2017年8月10日 10:34:32



1. 重要的编程习惯
    * 思考清楚再编码
    * 良好的代码命名和缩进对齐习惯
    * 能够进行单元测试

          需要掌握的部分:熟练地设置断点、单步跟踪、查看内存、分析调用栈

2. 面试前的准备
    * 规划好路线并估算出行时间
    * 准备好得体的姨夫
    * 注意面试邀请函里的面试流程
    * 准备几个问题(每一轮面试的最后可以提问)

3. 面试的三个环节
    (1)行为面试环节
        简短的自我介绍:用30s到1min的时间介绍自己的主要学习,工作经历即可。

        简历的注意事项:
            a.项目经验
                建议使用STAR模型描述自己经历过的每一个项目:
                    * Situation:简短的项目背景
                    * Task:自己完成的任务:注意“参与”和“负责”的区别
                    * Action:为完成任务自己做了哪些工作,是怎么做的。
                              做软件开发的,可以写基于什么工具在哪个平台下应用了哪些技术
                    * Result: 自己的贡献。写得具体些,最好能用数字加以说明。比如完成了多少功能,修改了多少BUG。

                面试官可能对此提出的问题:
                * 在项目中碰到的最大问题是什么,你是怎么解决的?
                * 从这个项目中,你学到了什么?
                * 什么时候会和其他团队成员合作,有什么样的冲突,如何解决?
                针对每一点,应该提前做好准备。

                在介绍项目经验时,不必要详述项目的背景,而是要突出介绍自己完成的工作以及取得的成绩。

            b.掌握的技能。
                注意: “了解”,“熟悉” 和 “精通”的区别。
                * 了解: 对某项技术只是上过课或者看过书,但没有做过实际的项目。不建议在简历中列出只是肤浅地了解
                         一点的技能,除非这项技术应聘的置位的却需要。
                * 熟悉:简历中描述的技能大部分应该是“熟悉”。如果我们在实际项目中已经有较长的时间,通过查阅相关的
                        文档可以独立解决大部分问题,那么我们就熟悉它了。
                * 精通:慎用。

    (2)技术面试环节
        面试官关注的5中素质:
            a. 扎实的基础知识
                基础知识扎实全面,主要包括3个方面:编程语言,数据结构,算法。
                * 编程语言:至少掌握一两门编程语言,掌握基础语法
                * 数据结构:考察重点。需要熟练掌握:链表、树、栈、队列和哈希表等数据结构,以及它们的操作。
                            二叉树和链表的问题比较多。
                * 注重查找和排序的算法:在了解各种查找和排序算法的基础上,重点掌握:二分查找、归并排序和快速排序。

            b. 能写高质量的代码
                关注边界条件,特殊输入等细节。
                通常越是简单的问题,面试官的期望值就会越高。
                写出的代码,鲁棒性要高:
                    例如:求链表中倒数第K个结点。
                        使用两个指针,第一个指针先走到k-1个结点,然后第二个指针和第一个指针一起走。
                        当第一个指针走到结束,第二个指针指向倒数第K个结点。
                    编程时,注意链表输入是否为空链表,链表的长度是否少于k,k是否为0,溢出等问题。

                这种问题最好的解决办法:在动手写代码之前先想好测试用例,把问题考虑地尽量全面之后,再写代码。
                                        写完代码之后,不要急着提交,心里默默运行,检查。

            c. 分析问题时思路清晰
                当遇到复杂问题时,要理清楚思路,尽量完成。
                有以下几种方法,帮助理清思路:
                * 举例使抽象问题具体化
                    例举简单的例子,帮助自己理解问题,同时可以向面试官提问,帮助理解。
                * 画图使抽象的问题具体化
                    比如抽象的数据结构,画图帮助理解
                * 分解使复杂的问题简单化
                    分解成若干简单的子问题,再一一解决。

            d. 能优化时间效率和空间效率
                当面试官出的问题有多种解法时,通常会期待应聘者能够给出最优解。
                这是,就要熟悉各种数据结构的优缺点,并且选择合适的数据结构来解决问题。
                熟练掌握常用算法,来优化代码。面试中最常见的是查找和排序。

            e. 优秀的综合能力
                展现自己的软技能,比如自己的沟通能力和学习能力。
                在介绍项目经验或者算法思路时,观点要明确,思路清晰。
                要有团队意识,不可高傲或者轻视合作者。

    (3)提问环节
        注意事项:
            * 不要问和自己的置位没关系的问题
            * 不要问薪水
            * 不要立即打听面试结果
            * 推荐问的问题与应聘的置位或者项目相关的问题。
                如何问号这种问题?
                    一是面试前做好功课,到网上搜集资料,对公司的成立时间。主要业务、置位要求等都了然于胸
                    二是面试过程中留心面试官说过的话。
原创粉丝点击