美文网首页互联网科技Java 杂谈
80%的Java程序员面试大厂到倒在这道题下

80%的Java程序员面试大厂到倒在这道题下

作者: 程序员追风 | 来源:发表于2019-07-19 20:06 被阅读2次

    大家都知道互联网寒冬来了,我们要储备足够的粮食才能过冬。我们大家都知道一线城市比二线城市更公平,更开放。大厂也是一样的,大厂有更多的包容,即便是最近的寒冬零星的大厂分别裁员,整体大厂的环境还是不错的。

    为什么很多Java程序员都想要投递大厂,主要一下几方面:

    都想追求高薪资

    相对小厂而言,大厂的薪资水平会更高不少。具体数字区间就不细说了,但是大厂整体会大方很多,只要你能够通过面试,30%甚至更高的涨薪都有机会拿到,更何况,大厂的年终奖也不会被“无良”老板随意克扣。

    想要稳定的晋升空间

    去年整体大环境不行,很多公司裁员,尤其是不太盈利的中小厂,比如某团、某滴。而对于大厂而言,裁员的概率会小很多,毕竟裁员带来的收益远比不上因此带来的负面效应和股价下跌。

    想要靠谱的职业发展

    近两年很多发展快的企业以 double 薪资去BAT挖人,比如头条、拼多多之类的。因此,从长远的职业发展角度考虑,BAT 的工作背景就相当于清北毕业的学生一样抢手。有了 BAT 的背景,未来无论跳槽还是晋升、成为技术经理或者架构师,自己都具有足够的主动性。

    接下来给大家介绍一道面试题

    背景介绍

    这里给大家分享一道很有趣的面试题。

    面试过程

    面试官:redis我看你有使用过,说一下redis的基本类型吧?

    A:String,Hash,Set,List,Zset。

    面试官:redis中string类型的实现有没有了解过?

    A:(喵喵喵?)

    面试官:回家等通知吧。

    面试反思

    作为一个爱学习的好孩子,遇到不会的当然要努力学习了,于是查阅了良多资料,算是把这个问题给搞明白了,下面且听我慢慢道来~

    Redis的底层数据结构

    经过查阅资料,发现Redis的底层数据结构分为八种

    Long类型的整数

    embstr 编码的简单动态字符串

    简单动态字符串

    字典

    双端链表

    压缩列表

    整数集合

    跳跃表和字典

    简单动态字符串

    Redis底层是用C语言写的,C语言中的字符串就是一个简单的字符数组,Redis中为了实现方便的扩展、安全和性能,自己定义了一个结构用来存储字符串。

    我们叫它简单动态字符串(simple dynamic string)。

    该数据结构中除了保存字符串,还保存了free(表示字符串剩余的空间)以及len(当前子字符串的长度)。

    相比于C中的字符串,Redis这样做有几点好处:

    获取字符串长度的复杂度为O(1)

    由于sdshdr结构中定义了len用来保存当前字符串长度,因此不必像C中一样遍历字符串来得到长度。

    不会造成缓冲区溢出

    C中使用函数将一个字符串添加到另一个字符串默认是认为字符串剩余空间足够容纳添加的,但是事实可能并不够,会造成缓冲溢出。

    但是Redis在每一次执行字符串拼接的过程前都会判断当前剩余的free是否能够存下需要拼接的字符串,因此不会造成溢出。

    减少修改字符串带来的内存重分配次数

    Redis采用了内存预分配方法,每次扩容都会额外预留一些空间方便下次扩容来减少这些操作的出现频率。

    二进制安全

    兼容部分C字符串函数

    一个人的成长并不是成长,放到大环境中的成长才能让一个人变得有价值。

    你在一个小公司可能年薪40w+,也不少,但却不能很好的给自己一个定位。大厂评级就是一个清晰的衡量,每一个级别的待遇和能力在任何一个大厂都是被社会认可的。你一个百度的 T6 去了阿里绝对不会给你 P5,亚马逊的 SDE2 去了阿里也绝对不会给你一个 P6。

    大厂给你的定位和价值不仅仅是你的待遇,而是社会的认可。

    相关文章

      网友评论

        本文标题:80%的Java程序员面试大厂到倒在这道题下

        本文链接:https://www.haomeiwen.com/subject/hixelctx.html