别以为面试完就完事了!大厂HR告诉你这件事不做就亏大了!

Posted 慕课君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了别以为面试完就完事了!大厂HR告诉你这件事不做就亏大了!相关的知识,希望对你有一定的参考价值。

如何准备、如何面试,我们谈得很多。但在面试后该做些什么,反而会被大家所忽略。在有面试机会之前,我们要积极准备,而在面试之后的复盘总结,则是为我们下一次面试成功添了砖加了瓦。有很多求职者得不到心仪的机会,问题可能不在面试环节,而是面试后所做的复盘工作还不到位。

面试后及时复盘及时总结,才是拿offer的关键利器。今天为大家推荐一个超高效的面试复盘八步法,事实证明,多次这样复盘,你的面试成功率将高达90%。

大厂面试复盘八步法

1、回顾目标

回顾目标是什么?我们面试的目标很简单,就是要面试通过,那我们面试通过的目的是为了什么呢?当然是为了拿到一个更好的offer,有一个更好的发展机会。

2、对比结果

当完成面试后,我们要去进行结果的对比,结果的对比主要是针对于我们在面试过程当中好的和不好的地方去进行分析,看看我们表述过程中到底出了什么问题,而没有达成最开始的目的。

3、叙述过程

我们在对比结果的过程一定是个陈述过程,我们要去还原面试现场,看一看到底是哪些问题没有提前准备好,哪些问题可能是我们这一次面试表现比较好,把这些内容全部陈述出来,并一一记录下来,以备下一次的使用。

4、剖析自我

叙述过程并且完整记录下来,目的是要进行自我剖析,看一下成功有没有运气的成分,失败的话到底是自己哪些地方没有做好,是面试的方法没有应用好,还是面试前的准备不够充分,或者技术上面还有哪些地方需要补足。

5、分享交流

记录整个面试过程,进行自我剖析,最终我们要输出成文章再分享出去。为什么要分享呢?很多同学碍于面子或者工作多年的经验不愿意去做分享,然后总执拗于自己的逻辑里边,孰不知可能你在一条不是那么正确的路上越走越远了。

我们都知道battmd这种公司,它在招校招生的时候都是看C9的,甚至于一部分985大学的同学都因为学历不过关而被淘汰。但那一年的校招,我却亲眼看到一个普通二本的姑娘,几乎拿了所有大厂的offer,这点让我非常意外,所以在hr面试环节的时候,我就和她交流,问她是如何拿大厂offer的。

她说她在了解了校招的情况下,发现自己既没有学历优势,也没有实习优势,在什么都没有的情况下,她只能笨鸟先飞,她更早于其他同学在各大校招网站和论坛上面搜索每一家公司面试问题,笔试问题,把这些问题全部整理后自己从头到尾做了一遍,之后她又把自己做了这些问题后得出来的一些方法梳理成文章,在应届生网上面做了分享,没想到这个文章引起了非常大的反响。很多同学都给她分享了自己在大厂的实习经验,也有一些往届生给这位同学分享自己之前的成功面试经验,就是这份努力,让她从大家那里收获了非常多的有用信息,然后她融入到自己的面试过程当中。在面试过程中她不卑不亢,有理有据地表述自己的优点劣势,以一个坦诚学习的态度跟面试官进行沟通,从而获得了几乎battmd所有公司的offer。

整理信息梳理逻辑再进行文章的撰写,每一步都需要花费大量的时间和精力,这本身就是非常难的,但是分享和交流对你来说会是一个自我学习和复盘的过程,同时也能集思广益,收集到大家帮你提供的更多信息。

6、学习心得

最后我们要去看一下,通过我们的分享交流以及整个面试的过程体验到底有哪些心得,而这些心得可能恰恰就是我们拿到下一个offer的必备条件。

7、校准目标

我们的分享交流和学习心得最终是用来校准目标的,可能你的经验或者擅长的本就不是大厂当前所需要的能力模型,但并不等于你不优秀,只是你们不匹配罢了。但也不要灰心,我们在发展中的企业和创业型公司可能会拿到比大厂更多更好的资源,因为人才密度的不同,你可能还会有更大的发展空间和机会。当你成功的做了一个大项目的时候,可能就变成了大厂趋之若鹜的人才。

8、行动计划

我们校准了自己的目标之后,更重要的是为自己下一步的行动做好准备。

复盘八步法其实是一个闭环的逻辑,每一个细节的环节我们都要做到非常仔细,才能把整个面试做的越来越得心应手。不仅是面试,复盘八步法也可以有效的应用到你的工作场景中,无论是对于项目复盘,还是带领团队一起去做复盘,都非常有效!

面试话痨C:JAVA String,别以为你穿个马甲我就不认识你了

  面试话痨系列是从技术广度的角度去回答面试官提的问题,适合萌新观看!

   面试官,别再问我火箭怎么造了,我知道螺丝的四种拧法,你想听吗?


  String相关的题目,是面试中经常考察的点,当面试中遇到了String相关的问题,我们可以这么聊:

一:String底层结构

  从底层结构上来说,jdk1.8的String,底层是char[]。我在工作中几乎很少用到char[],因为List太好用了,我宁愿用List<Character>也不想用char[],因为以前学C时体会过用char[]的痛苦,长度必须事先设定好,也没有丰富的API去处理数据。所以刚开始用java时,觉得String这个类简直太好用了(直视面试官的眼睛,露出有点不好意思的笑)。后来才知道,原来是源码在替我们负重前行。

  比如我们都知道String的拼接,大部分情况下都是新建一个空间(这里可以用稍微缓慢不确定的语气说这句话,稍有心的面试官就会问你什么情况下不会新建空间,你就可以回答:1.连续相加时jdk会自动优化成一次空间的新建,2.两个字符串常量相加的值如果是已经存在的字符串常量,那么会直接指向这个已存在的字符常量),新建的原因就是因为底层是一个char[],无法直接扩容。而新建空间的花费很多,所以对于有多次拼接需求的情况,我会酌情选择StringBuffer和StringBuilder,主要是看是否存在多线程的情况,存在的话就用StringBuffer(线程安全的方式,涉及的知识点很多,可以专门写一章,先留个传送门:面试话痨(三)我会锁的四种配法,您配吗?)。

 

  另外,我有次看jdk11里面String的底层已经变成了byte[],顺手查了一下,说是用byte[]存的话,可以减少大概一半的内存占用,再具体的怎么实现怎么优化的没太仔细了解。(对于自己不太懂的知识,介绍完自己懂得部分以后,一定要接一句:再往下自己就不清楚了之类的话。这样面试官就不会再接着问你这个问题)。

  题外话:字符之间可以直接使用‘+’和‘-’运算符,实际计算的是字符对应的ASCII码的位置的加减,如 ‘1’ - ‘0’ = (int)1,用这个方法可以快速的完成char到int的强转,很多String类的题目都需要用到这个方法。

 

二:final修饰符

  因为char[]本身就是一个不能扩容的数组,所以用不可变的常量去修饰字符串就很适合。另外,final的特性也能为String带来很多的好处:

  1. 安全方面来说,密码、个人信息等基本都是以String为载体来进行存储的,final修饰的String类不可以被继承,创建的对象也不可以被改变,可以保证关键数据的安全性。

  2. 性能方面来说,final修饰后,String就被放入了常量池,常量池中有专门的字符串常量池,JVM可以将多个一样的String指向同一个地址,其中有任意一个String改变时,因为final的特性都会去重新建一个地址(或者指向另外一个值恰好相同的地址),不会影响原来的值;另外,String的不可变性让它的hashcode是固定的,可以被缓存的,用来做Map的key运算更快捷;还有,final修饰后,也不会存在多线程安全的问题。

  (本来想接着说一下常量的,但是一想到常量,脑子里就蹦出了方法区,堆,栈,JDK版本更替、GC方式,类加载,JVM内存模型,Java内存模型,可见性,volatile,自旋锁,太多了。先留个坑吧。面试话痨(四)常量在哪里呀,常量在哪里)。

  与final长得像的,还有finally和finalize。finally就是跟在try或者catch后面的一个关键字,以前我们学的是,try之后必定会执行finally,但其实这个是有前提的,就是程序不崩溃或者不被强制结束,try中加一句 System.exit(0); ,finally就不会被执行。

  至于finalize,这个方法几乎没人用了,它是Object类中就自带的方法,学名析构函数,听说是在java刚出生时,为了迎合C编程人员的习惯添加的方法。在对象快要被回收时调用且只会被调用一次。如果finalize中的代码将另外一个指针指向了该对象,那么JVM就会放弃该对象的回收。等到下一次该对象又不可达了,JVM就会直接回收,不会再调用finalize方法。因此方法存在不确定性,很少被使用。

 

三:equals

  在Obejct中,equals和==是一样的,都是直接比较数据的存放地址是否一致,而在String中,equals方法被重写成三个步骤的判断。

  

  HashMap中的equals大致也是使用了这三个步骤的判断:地址是否相等 --> size是否相等 --> 每一个key是否有equals的key,对应的value是否equals。

  不同的类对于equals的实现方式不一样,但他们都遵循若hashcode不相等,则equals也不相等的原则。这样做的目的主要是为了让Hash类集合插入值时的重复判定更合理:

   

  试想一下,假设两个身份证对象的hashcode不相等,equals却相等,那么两个相同身份证信息就会被放入HashSet中了!这会对我们的编码造成很大的困扰,所以对于需要被用于Hash的key值的对象(HashSet的值插入相当于是将值放入了key中,再插入了一个固定value值的HashMap),我们需要满足若hashcode不相等,则equals也不相等的原则。

  HashSet中的元素重复判定,优先判定hashcode的原因是:hashcode通过与HashSet的大小取余以后,可以快速的定位到可能相等的元素的位置,这时再对该位置上存在的元素的进行equals就行,只要hash分布的足够均匀,该操作的时间复杂度就接近于O(1),而若去掉hashcode寻址,直接使用equals对n个数进行对比的话,时间复杂度就是O(n)。

  说到这里还可以提一个经常被问到的问题,HashMap的查询时间复杂度是多少?

 

  如我上面的分析一样,时间复杂度是接近于O(1)的,当然也会有O(n)的情况。比如新建了一个类,hashcode值全部返回1,这样所有的值都会接到一个链表上,数组+链表的结构就退化成纯链表,时间复杂度就变成了O(n)。jdk1.8以后,链表长度超过8,并且数组长度大于64时,链表会变成红黑树,红黑树的遍历时间复杂度为O(log(n))。(红黑树、B树、索引、数据库、图、广度搜索、深度搜索相关的数据结构及算法后面再说。面试话痨(N)还没有头绪不知道什么时间写)。

 


  最后,送大家一道我特别喜欢的面试题。 

    请将一段字符串转换成整数,不要使用parseInt。

 

    public int MyParseInt(String str) throws Exception{
        /*
            1.数据校验
            (不管面试过程中遇到什么题,都可以先优雅的写下
                //1.数据校验
              然后胸有成竹的写一些有的没的校验,写的过程中再想后面应该怎么写。
              写注释+周全的校验是写代码的基本素养)
         */
        String errMsg = check(str);
        if (errMsg != null) {
            throw new Exception(errMsg);
        }
        char[] c = str.toCharArray();
        int result = 0;
        for (int i = 0; i < c.length; i++) {
            result = result * 10 + (c[i] - \'0\');
        }
        return result;
    }

    /**
     * 
     * @param str 待校验的数据
     * @return 错误信息,没有错误时返回null
     */
    private String check(String str) {
        if (str == null) {
            return "输入不能为空!";
        }
        /*
            很少有人能一遍写出不用调试没有bug的代码,更别说在面试那么紧张的气氛中了
            所以,在写完能够基本实现题目要求的代码以后,最好能想下代码中不足的地方,然后坦诚的告诉面试官:
                这个代码还有需要改进的地方,比如可以添加对 负号、正号、小数点的支持,比如没有校验int的阀值,
                如果是工作中遇到,我肯定能解决这些问题。
         */
        if (str.replaceAll("[0-9]","").length() > 0){
            return "包含非法字符";
        }
        return null;
    }

   本章中提到的一些面试回答技巧这里再写一下,我个人觉得挺有用的:

  1、 对于自己擅长的问题,可以在问题中留下一些点,吸引面试官继续提问。

  2、 对于自己不擅长的问题,回答完自己会的部分以后,可以直接说再往下自己就不懂了,不要不懂装懂,让面试官继续问下去后再回答不知道。

  3、 如果面试官已经问了你不知道的问题,尽量从性能和安全方面,说出一个答案。直接先坦诚的告诉面试官你不知道,只是根据个人经验这个应该是这样的,因为这样对于安全/性能的优点是xxx。


   原创不易,转载请注明出处

  本系列链接如下:

  面试话痨(一)让我们来热切的讨论这个养猪场吧

  面试话痨(二)C:JAVA String,别以为你穿个马甲我就不认识你了

   面试话痨(三)我会锁的四种配法,您配吗?

 

 

 

  

  

 

  

  

  

  

以上是关于别以为面试完就完事了!大厂HR告诉你这件事不做就亏大了!的主要内容,如果未能解决你的问题,请参考以下文章

面试大厂50多次,终于总结出来了HR面试最常问的问题(附技巧性答复)

隔壁老王金三银四靠着这两份笔记轻松拿下4个大厂offer,我偷偷分享给大家,别告诉老王啊

睡梦中面试腾讯 pcg 移动端开发, 一+二+三+hr面(已oc)

上海大厂Java面试经历:字节跳动三场技术面+HR面,终于彻底把握了

大厂面试原来是这样,这份面经你值得拥有

程序员BATJZ大厂面试,HR看简历哪些减分项?(附面试详细流程+最新简历模板)