专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

新鲜出炉的顺丰二面16大题,看看哪一个问题会把你劝退吧

  本文主人翁是我粉丝群里一位同学,周三线上顺丰面试遇到的问题,反馈面经时,只记得部分的。
  本来约的三点的面试,但是面试官提前上线看到我在线就说提前开始吧。先看问题,按顺序一共16个自我介绍说一个你认为有挑战的项目怎么学习Java的说一下抽象类和接口说一下HashMap和HashtableHashMap添加一个元素的流程什么是红黑树,特点是什么?B树的特点,有几层,最大可以存放多少条数据MySQL的索引为什么使用B树而不使用跳表?Redis为什么使用跳表而不使用B树或二叉树呢?创建索引需要注意些什么?如果单表数据量过千万,怎么优化?一个500w条数据的表a,一个300w数据的表b,通过外键tid关联,如何最快地查询出满足条件的第50000到第50200中的这200条数据记录?说说JVM的内存模型为什么需要Survivor区?你有什么想问我的吗?试题解析自我介绍
  菜鸟的回答:
  面试官你好,我叫张三,湖南人,毕业于XX大学,从XX年毕业后就一直从事java开发,差不多3年了吧。来贵公司面试,寻求一份java开发工作。
  自我介绍要说几个点:你是谁,你的优点是什么?这么多年你干了啥?在学校获得过什么奖?对哪些技术有深入研究?是否有高并发系统的设计?是否参与过什么大型项目?有没有待过团队?
  总之,把你最好的一面亮出来,让人家知道你哪方面相对比较强。说一个你认为有挑战的项目
  这个问题其实是因人而异的,对于刚入门的朋友,叫他搭建个项目就觉得很有挑战性。所以,大部分对于这个他该如何回答也是一筹莫展。
  其实,对于大佬来说,挑战性已经不再是技术,更多的是如何包装项目哄好面试官(老板)、如何压榨自己的下属才是项目有挑战性的点。
  而在面试环节,有挑战性是对于面试官而言的一个标准。如果这个项目业务这个技术点面试官没接触过,听起来很难,那这个就是一个有挑战的项目。
  如果面试官对你所说的挑战项目很熟悉,此时可能对你来说是个机会也是个挑战,回答出面试官没遇到的问题,并已经解决的,那面试官妥妥的佩服你。反之,面试官都知道的问题,你却答不上来,那就会让面试大打折扣了。
  技术栈也很重要,比如说:五六年前,你的技术栈中有dubbo、SpringBoot那是很吃香的,但是现在已经是标配了。
  但是有大数据、高并发、架构改造经验的开发者还是少,因为绝大部分公司都没法发展成为大公司。但。这个也是随着软件工程怎么发展都无法改变的事。
  所以对于有挑战的项目具有以下几个特点:
  1、大数据量
  2、高并发
  3、架构改造
  只要你的项目能和这几个东西沾一点边,那你的项目level就高至少一级。
  这里,我给你一个回答的模板:1、我负责的是这个xxx业务项目,这个业务的是用来xxx的。
  2、前期为了快速试错,快速响应市场,前期使用了简单的xxxx方案。
  3、随着业务的发展,这个方案在xxx方面出现xxx的技术问题。
  4、为了解决这些技术难点,最终用了xxx方案,然后介绍其他方案,同时这些方案是怎么解决这些技术问题的。平时都是怎么学习Java的
  就如实地说自己的学习历程,但要注意,学习要体现出自己是主动的,另外,标注自己有个好习惯:记笔记,好几下不如烂笔头。
  推荐看官网,看书,看视频。
  学习过程中,不断实践,不断反思,不断总结。说一下抽象类和接口
  相同点
  (1)都不能被实例化(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
  不同点
  (1)接口只有定义,不能有方法的实现,JDK8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
  (2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
  (3)接口强调特定功能的实现,而抽象类强调所属关系。
  (4)接口成员变量默认为publicstaticfinal,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。说一下HashMap和Hashtable
  我们可以从五个方面来回答:线程是否安全:HashMap是非线程安全的,HashTable是线程安全的。因为HashTable内部的方法基本都经过synchronized修饰。(如果你要保证线程安全的话就使用ConcurrentHashMap);效率:因为线程安全的问题,HashMap要比HashTable效率高一点。另外,HashTable基本被淘汰,不要在代码中使用它;对Nullkey和Nullvalue的支持:HashMap可以存储null的key和value,但null作为键只能有一个,null作为值可以有多个;HashTable不允许有null键和null值,否则会抛出NullPointerException。初始容量带下和每次扩充容量大小的不同:创建时如果不指定容量初始值,Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n1。HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。创建时如果给定了容量初始值,那么Hashtable会直接使用你给定的大小,而HashMap会将其扩充为2的幂次方大小(HashMap中的tableSizeFor()方法保证)。底层数据结构:JDK1。8以后的HashMap在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)(将链表转换成红黑树前会判断,如果当前数组的长度度大于64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。Hashtable没有这样的机制。尽管是普通不能再普通的面试题了,可面试中,照样很大部分人同学回答的不好。回答中提到了2的n次幂,面试官很有可能会继续追问相关的问题,如果还不清楚的,建议对HashMap进行系统的学习。
  我的博客上之前发过两篇文章:
  HashMap的31连环炮,我倒在第5个上
  三年必备,HashMap源码HashMap添加一个元素的流程
  HashMap在put添加元素过程可以分为下面9个步骤:1。使用put()方法时,直接调putVal()方法2。在put的时候先判断数组是否为空,如果为空则进行resize操作3。以hash索引数组的长度1与key的hash值进行与运算,得出在数组中的索引,如果索引指定的位置为空,则代表可以插入,直接插入一个新的node4。判断当前的key是否存在,如果存在则进行替换,如果替换成功则返回老的值5。如果key不存在,则判断当前节点是否为树类型,如果是树类型的话,则按照树的操作去追加新节点内容6。如果出现hash冲突的节点不是树类型,则说明当前发生的碰撞在链表里面,则这个时候就进入循环处理逻辑7。进入循环逻辑之后先判断被碰撞节点的下一个节点是否为空,如果为空就将新节点放入8。放入后判断当前链表是否超过最大允许链表长度8,如果超过则转为红黑树进行插入9。如果map的索引表为空或者当前索引表长度还小于64(最大转红黑树的索引数组表长度),那么进行resize操作就行了;否则,如果被碰撞节点不为空,那么就顺着被碰撞节点这条树往后新增该节点插入
  可以看看我博客(www。woaijava。cc)上的博文:三年必备,HashMap源码什么是红黑树,特点是什么?
  红黑树(RedBlackTree)是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。
  红黑树的特点有5个:节点是红色或黑色。根节点是黑色。所有叶子都是黑色(叶子是NIL结点)每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)从任一节节点到其每个叶子的所有路径都包含相同数目的黑色节点。
  其实这个问题不难,难的是可能有的面试官会问红黑树的操作,左旋转右旋转。。。,我面试过几百人,能说出来寥寥无几。B树的特点,有几层,最大可以存放多少条数据
  B树的特点有两个:1。非叶子节点〕仅具有索引作用,也就是说,非叶子节点只能存储Key,不能存储value2。树的所有叶节点构成一个有序链表,可以按照key排序的次序依次遍历全部数据。
  B树一般是13层。
  InnoDB页的大小默认是16KB:假设一条记录大小为1KB,则一个数据页中可以存16条数据(忽略页中的其他数据结构)假设主键为int,指针大小为6B,则一个索引页中可以存储16KB(4B6B)1638个索引
  所以,两层的B树可以存储:16163826208条数据;三层的B树可以存储:161638163842928704条数据。MySQL的索引为什么使用B树而不使用跳表?
  B树是多叉树结构,每个结点都是一个16k的数据页,能存放较多索引信息,所以扇出很高。三层左右就可以存储2kw左右的数据。也就是说查询一次数据,如果这些数据页都在磁盘里,那么最多需要查询三次磁盘IO。
  跳表是链表结构,一条数据一个结点,如果最底层要存放2kw数据,且每次查询都要能达到二分查找的效果,2kw大概在2的24次方左右,所以,跳表大概高度在24层左右。最坏情况下,这24层数据会分散在不同的数据页里,也即是查一次数据会经历24次磁盘IO。
  因此存放同样量级的数据,B树的高度比跳表的要少,如果放在MySQL数据库上来说,就是磁盘IO次数更少,因此B树查询更快。
  而针对写操作,B树需要拆分合并索引数据页,跳表则独立插入,并根据随机函数确定层数,没有旋转和维持平衡的开销,因此跳表的写入性能会比B树要好。
  其实,MySQL的存储引擎是可以换的,以前mysql5。5是myisam,后来才有的innodb,它们底层索引用的都是B树。也就是说,你完全可以造一个索引为跳表的存储引擎装到MySQL里。事实上,facebook造了个rocksDB的存储引擎,里面就用了跳表。直接说结论,它的写入性能确实是比innodb要好,但读性能确实比innodb要差不少。感兴趣的话,可以在文章最后面的参考资料里看到他们的性能对比数据。Redis为什么使用跳表而不使用B树或二叉树呢?
  因为B树的原理是叶子节点存储数据,非叶子节点存储索引,B树的每个节点可以存储多个关键字,它将节点大小设置为磁盘页的大小,充分利用了磁盘预读的功能。每次读取磁盘页时就会读取一整个节点,每个叶子节点还有指向前后节点的指针,为的是最大限度的降低磁盘的IO。因为数据在内存中读取耗费的时间是从磁盘的IO读取的百万分之一,而Redis是内存中操作数据,不涉及IO,因此使用了跳表;创建索引需要注意些什么?
  这道题,也可以用在问你会哪些SQL优化的时候。最适合索引的列是出现在WHERE子句中的列,或连接子句中的列,而不是出现在SELECT关键字后的列。索引列的基数越大,索引效果越好。根据情况创建复合索引,复合索引可以提高查询效率。避免创建过多的索引,索引会额外占用磁盘空间,降低写操作效率。主键尽可能选择较短的数据类型,可以有效减少索引的磁盘占用提高查询效率。对字符串进行索引,应该定制一个前缀长度,可以节省大量的索引空间。如果单表数据量过千万,怎么优化?
  1、数据库设计和表创建时,考虑性能问题,比如:单表不要有太多字段,建议在20以内、索引并不是越多越好,要根据查询有针对性的创建,考虑在WHERE和ORDERBY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描、选择合适的数据类型、选择合适索引类型等。
  2、SQL编写时需要注意,比如:列表数据不要拿全表,要使用LIMIT来分页,每页数量也不要太大、可通过开启慢查询日志来找出较慢的SQL、避免select,将需要查找的字段列出来等。
  3,存储引擎选择,MyISAM适合SELECT密集型的表,而InnoDB适合INSERT和UPDATE密集型的表。
  4、分库分表,比如:分库把一个数据库分成多个,建议做个读写分离就行了,真正的做分库也会带来大量的开发成本,得不偿失!不推荐使用、分表就是把一张大表,按照如上过程都优化了,还是查询卡死,那就把这个表分成多张表,把一次查询分成多次查询,然后把结果组合返回给用户。分表分为垂直拆分和水平拆分,通常以某个字段做拆分项。比如以id字段拆分为100张表:表名为tableNameid100。但:分表需要修改源程序代码,会给开发带来大量工作,极大的增加了开发成本,故:只适合在开发初期就考虑到了大量数据存在,做好了分表处理,不适合应用上线了再做修改,成本太高等。
  5、硬件升级,这办法是最简单的,相对的成本也高,老板就不愿意了。
  6、数据库升级,比如:把MySQL数据库换成大数据引擎处理数据、换成阿里云POLARDB,POLARDB是阿里云自研的下一代关系型分布式云原生数据库,100兼容MySQL,存储容量最高可达100T,性能最高提升至MySQL的6倍。一个500w条数据的表a,一个300w数据的表b,通过外键tid关联,如何最快的查询出满足条件的第50000到第50200中的这200条数据记录?
  方法一:如果a表tid是自增长,并且是连续的,b表的id为索引。SQL语句如下。selectfroma,bwherea。tidb。idanda。tid500000limit200;
  方法二:如果a表的tid不是连续的,那么就需要使用覆盖索引,tid要么是主键,要么是辅助索引,b表id也需要有索引。SQL语句如下。selectfromb,(selecttidfromalimit50000,200)awhereb。ida。tid;说说JVM的内存模型
  JVM内存结构有:程序计数器、堆内存、方法区和栈(java虚拟机栈和本地方法栈)。
  程序计数器(ProgramCounterRegister)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
  堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、FromSurvivor空间、ToSurvivor空间,默认情况下年轻代按照8:1:1的比例来分配;
  方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名NonHeap(非堆);栈又分为java虚拟机栈和本地方法栈主要用于方法的执行。方法区可理解为一种规范,其实现比如永久代、元空间。
  Java虚拟机栈(JavaVirtualMachineStacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(StackFrame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
  本地方法栈(NativeMethodStacks)与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务。虚拟机规范中对本地方法栈中的方法使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。为什么需要Survivor区?
  如果没有Survivor,Eden区每进行一次MinorGC,并且没有年龄限制的话,存活的对象就会被送到老年代。这样一来,老年代很快被填满,触发MajorGC(因为MajorGC一般伴随着MinorGC,也可以看做触发了FullGC)。老年代的内存空间远大于新生代,进行一次FullGC消耗的时间比MinorGC长得多。
  面试官可能会问:执行时间长有什么坏处?
  频发的FullGC消耗的时间很长,会影响大型程序的执行和响应速度。
  假如增加老年代空间,更多存活对象才能填满老年代。虽然降低FullGC频率,但是随着老年代空间加大,一旦发生FullGC,执行所需要的时间更长。
  假如减少老年代空间,虽然FullGC所需时间减少,但是老年代很快被存活对象填满,FullGC频率增加。
  所以Survivor的存在意义,就是减少被送到老年代的对象,进而减少FullGC的发生,Survivor的预筛选保证,只有经历16次MinorGC还能在新生代中存活的对象,才会被送到老年代。你有什么想问我的吗?有的面试官是礼貌性的问,根本不在意你回答内容,因为此时估计面试就是凉凉啦。
  但是,有反问的机会,大部分还是觉得你不错,被录取的概率非常大,所以还是得慎重回答
  不管ta是怎么样的心态,咱们表现好自己就行。
  这个问题看上去可有可无,其实很关键,一般面试官不喜欢说没问题的人,因为其很注重员工的个性和创新能力。企业不喜欢求职者问个人福利之类的问题。
  贵公司对新入公司的员工有没有什么项目、业务之类的培训,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。
  从上面面试问题来看,其实很大部分还是蛮简单的,都是八股文的,但也有一些非八股文的,你觉得这次面试难吗?需要Java面经面题或者职业规划方面的资料可以看下图哦
  原文:https:mp。weixin。qq。coms2b2m903aqgQgLIb0zvDwQ

海信中国第一,世界第二的广告语改掉了,背后有何逻辑?(文韩宜珈编辑周远方)最近有一些声音关注海信在世界杯赛场边打出的广告,中国第一,世界第二,有人认为有一些争议,一位接近海信的知情人士对观察者网回应了此前报道中提到的相关质疑。他提到走出非洲让我爱上了非洲走出非洲是作者卡伦。布里克森写给非洲人民的一份情书,。书中作者在非洲经营咖啡农场。她通过一个又一个小故事向我们描绘出非洲壮阔的草原,可爱的土著,以及质朴的非洲风土人情,小说记载着白700多名百岁老人研究发现生活中这一好习惯是他们长寿的秘诀长寿历来是所有人的追求,因此有科学家针对700多名百岁老人进行了研究,研究的时间长达三年,最终得知,这些老年人之所以能够长寿,而且不容易生病,是因为他们都有一个共同的特点,那就是心预计新一期男篮集训后,可能乔帅发现有几名欧洲型球员,更有信心中国男篮为了明年男篮世界杯,取得亚洲区参赛国最好成绩,力保中国男篮能顺利拿到下届在巴黎举办奥运会,中国男篮不在缺席,聘签了欧洲名帅,塞尔维亚人乔尔杰维奇,他曾带领塞尔维亚男篮获得过24岁的东契奇,24岁的乔丹,3项数据对比,才发现有人被高估24岁前,东契奇在NBA效力四个赛季,共264场比赛,总得分7598分,总篮板2424个,总助攻2265次,场均28分9篮板8。5助攻24岁前,乔丹在NBA效力三个赛季,共182场上海有四座国家级森林公园,景色各有千秋,其中只有一座免费开放如今银杏渐黄,枫叶泛红,正是欣赏秋景的好时节每到周末,上海各大公园就成了市民们游玩放松的热门场所。虽然上海公园数量众多,但是其中只有四座属于国家级森林公园。它们分别是佘山国家森林公免费的厦门网红打卡点高颜值的公园夜市小吃就等你了!十二月的翔安不似北方的天寒地冻整体气温恰如省外的秋季找个冬日晴朗的午后带上萌娃到翔安打卡动画主题地下通道到鼓锣公园散散步晒晒太阳再到闽篮城市广场吃美食赶紧安排上吧动画地下通道这座动乌鲁木齐雅玛里克山森林公园迎客乌鲁木齐晚报全媒体讯(记者李宁艳)12月5日,乌鲁木齐市沙依巴克区雅玛里克山森林公园开门迎客。今年54岁的市民汪生英得知消息后,带着女儿,徒步来到山上拍雪景呼吸新鲜空气。母女俩带着外贸大市宁波再出发百团千企万人飞全球拓市场组团出海企业合影。费建明供图中新网宁波12月6日电(记者林波)从率先推出商务包机为企业赴境外提供便利,到百团千企万人组团出海,外贸大市浙江宁波不断创新服务模式,助企飞全球拓市场。1祁阳智慧保护湘江母亲河红网时刻新闻12月8日讯(通讯员刘志军陶冶)在祁阳市琵琶洲,巡河的李顺秀正在捡拾河岸边的垃圾。从小喝湘江水长大的李顺秀,被聘为祁阳市民间总河长。每天,她都要到河畔上转上几圈,上榜了北京环球度假区明起进园无需查验核酸检测阴性证明北京环球度假区最新入园提示根据最新疫情防控要求,自12月7日开始,所有游客进入北京环球影城主题公园和北京环球城市大道无需查验核酸检测阴性证明,但需扫码核验北京健康宝无异常方可进入。
又要囤粮了吗?西班牙工会考虑将在7月重启全国大罢工西班牙媒体最新消息,西班牙货物运输保护协会决定,将在6月26日当天再次召集集会,以确定是否恢复于4月份暂停的全国性大罢工。在与交通交通和城市议程(Mitma)部的代表会面后,协会并主持人温雅在美产子上热搜!为何明星和素人都热衷赴美生娃?今日,浙江卫视主持人温雅在社交平台宣布在美生二胎喜讯。生娃这件喜事,评论区的声音除了恭喜以外就是疑问为何在美丽国生娃呢?除了温雅外,其实这些年来我们所熟知的一些明星都是在美丽国生娃地下城与勇士决斗发售预告6月28日上线今日(6月17日),亚克系统开发的格斗游戏地下城与勇士对决公布最新发售宣传,该作支持中文,将于6月28日发售,登陆SteamPS4PS5,Steam版锁国区,港区售价338元。发售003航母下水,但我更爱0042022年6月17日上午,中国第三艘航母福建舰在千呼万唤中终于下水,它的满载排水量8万余吨,配备了最先进的电磁弹射装置。003航母下水的意义重大。一是它是中国第一艘采用电磁弹射装置走路真的能长寿?医生过了50岁,做好这4件事,或许比运动重要生命在于运动我们每天都要行走,靠着我们的双脚散步尤其是现在大部分的人,对于自身的身体健康非常关注,逐渐养成了养生保健的好习惯。通过运动走路的方式,来维持机体的正常运行,甩掉身上的脂一个与福建号航母下水看似无关的问题为啥中国发展快?因为国人要求特别高,期望特别大。即便从无到有,由一而三,达到宇宙第一发展速度也满足不了国人要求,就像如今实现弹射又嫌不是核动力,因此中国不做世界第一那是没有道理的!第三艘航母福建舰下水可匹敌美军航母今天朋友圈被刷屏了。中国第三艘航母下水,很多人没猜到它叫福建。有人说这剑指海峡,团圆复兴指日可待,也有人说这有历史寓意,都是刻骨铭心的记忆清末海战一败涂地,第一艘叫辽宁,难忘甲午大神回复如果强奸没轮到我,算是违法吗?你就舍不得用手来摸摸我是吗你这是一个车子骑出了百万车的架势我有点不想跟着他丢人了,我还是先走吧要不是你拦着我,这书包我非要给他扔得远远的这是准备来一个富贵险中求吗我们这群众演员做得罚单之王民生银行,一手好牌打得稀烂?出品子弹财观作者廖鸿杰编辑蛋总被业内戏称为罚单之王的民生银行,最近又收到新罚单了。5月20日,贵州银保监局一连向民生银行下发4份行政处罚公告,并以虚增存款规模和项目贷款三查不尽职等DNF策划说百花齐放,所以玩什么职业,不用说了吧DNF110级版本,职业平衡继续进行,国服6。16版本,还将进行男气功和男弹药职业重制,还有13个职业进行数据平衡。按照尹策划的想法,要用职业平衡和105新史诗系统,打造一个百花齐iOS15发现偷跑大量手机流量,临时解决方法这两天有很多用户在微博与论坛反馈更新至iOS15。5后发现时间与地点竟然会偷跑流量,少则几个G,多则十几G,至于为什么会消耗这么多流量,大家也是一头雾水,小编针对这个问题也专门进行
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网