面试

我的第二次校招之旅

寵の児 提交于 2020-12-22 17:26:12
大家好,我是泫 ,如果不出意外我是明年将要毕业的研究生, 本次校招中拿到了腾讯音乐和快手的 offer 。这是我的第二次校招了,本文主要想讲讲自己这次的经历。 <!--more--> 我的第二次秋招之旅 最近应该会更新一篇 不一定靠谱校招指南 ( 两年前写过一版 ,现在觉得还可以完善),根据我的理解,给大家介绍下校招的基本情况, 推荐一些我看过的资料和总结的注意事项,可以关注一下我的公众号《泫言》,以便接受新的文章 (๑¯㉨¯๑) 背景经历 我目前在华中科技大学读研究生,本科就读于中国地质大学(武汉)。这次秋招投递的策略也和 本科时的海投 大为不同, 本科大三暑假在上海七牛云公司实习 ,在秋招投递了近 30 家互联网公司,大概在八月中旬开始面试到八月底,面了 4-5 家公司,拿到除了实习转正的第一个 offer。 在九月初回学校后意外获得了一个保研的资格,就陆续拒绝了其他公司的面试,大四回到学校摸鱼,现在回想起来大四有点浪费,继续在公司实习到 12 月底 可能是一个更好的选择 ,不过对于比较佛系的我来说,其实哪种选择都还行,随心就好。 投递策略 本次秋招并没有使用海投的策略,只投递了比较有名的头部互联网公司,但是由于实验室的关系,我并没有去参加实习,直接从秋招提前批开始投递,面完七月底面挂了百度和阿里之后, 主要在 8.10 开始投递各大公司,我的投递时间并不算早

娱乐 | 14个简单、有趣、好玩的Linux命令

Deadly 提交于 2020-12-22 17:16:19
前言 相信大家对于linux常用的命令一定都不陌生,但是一些简单,好玩,有趣,虽然可能没有实际作用的命令,你又有了解多少呢?话不多说,本期文章为大家带来15个好玩的linux命令,希望大家能够喜欢! 1、sl 命令 你会看到一辆火车从屏幕右边开往左边…… 当然我们需要先安装软件包 sudo apt - get install sl 然后运行 sl 即可看到效果 2、fortune 命令 输出一句话,有笑话,名言什么的 (还有唐诗宋词 sudo apt-get install fortune-zh ) 软件包安装 sudo apt - get install fortune 这些都是英文的,如果你想看中国的唐诗三百首,则需要再安装: sudo apt install fortune - zh 来多执行几次 fortune-zh ,可以看到不同的唐诗: 3、cowsay 命令 用ASCII字符打印牛,羊等动物 也是需要先安装软件包 sudo apt - get install cowsay 还有一种骚操作是 cowsay -l 查看其它动物的名字,然后 -f 跟上动物名 ,如 4、cmatrix 命令 这个就很酷,有《黑客帝国》那种矩阵风格的动画效果 先安装软件包 sudo apt - get install cmatrix 运行 cmatrix 命令即可 5、figlet

css居中问题:水平居中、垂直居中

送分小仙女□ 提交于 2020-12-22 05:52:56
亲们支持我的新博客哦==》 原文地址 (欢迎加群一起玩耍: 575180837 ) 本篇文章所有演示代码下载==》 github/calamus0427 css水平垂直居中是面试时候遇到最多的问题,我总结一下大部分解决方案 水平居中: 1.margin:0 auto; ​ 2.text-align:center; 注意:text-align是针对行内元素的居中,块级元素需要设置display为inlin-block才可以 垂直居中: ​ 1.绝对定位-宽高的一半 优缺点:必须知道元素的宽高,但是方法很快捷 2.绝对定位和margin:auto; 不用知道元素的宽高,但是绝对定位会影响文档流及之后的其他元素的布局,使得这个方案的可食用性较差 3.transfrom 这个方法比较高级了,用到了形变,据我所知很多大神喜欢使用这个方法进行定位,逼格很高的,学会后面试一定要用!这个是不需要知道居中元素的宽高就可以使用的,在面试中大部分人会问如果不知道宽高该如何居中,答这个,加分!对transform不了解的同学可以查阅一下资料了解一下! 4.diplay:table-cell 表格布局,除了历史上的一些诟病,但是还是很多场景可以用到的,兼容性也很好,flex解决不出来的问题可以尝试 5.diplay:flex 现在布局的主流,移动端pc端都兼容,布局也很方便

Synchronized 同步方法的八种使用场景

穿精又带淫゛_ 提交于 2020-12-22 05:11:29
点击上方「 蓝字 」关注我们 简介 本文将介绍7种同步方法的访问场景,我们来看看 这 七种情况下,多线程访问同步方法是否还是线程安全的。 这些场景是多线程编程中经常遇到的,而且也是面试时高频被问到的问题,所以不管是理论还是实践,这些都是多线程场景必须要掌握的场景。 八种使用场景: 接下来,我们来通过代码实现,分别判断以下场景是不是线程安全的,以及原因是什么。 两个线程同时访问同一个对象的同步方法 两个线程同时访问两个对象的同步方法 两个线程同时访问(一个或两个)对象的静态同步方法 两个线程分别同时访问(一个或两个)对象的同步方法和非同步方法 两个线程访问同一个对象中的同步方法,同步方法又调用一个非同步方法 两个线程同时访问同一个对象的不同的同步方法 两个线程分别同时访问静态synchronized和非静态synchronized方法 同步方法抛出异常后,JVM会自动释放锁的情况 场景一:两个线程同时访问同一个对象的同步方法 分析:这种情况是经典的对象锁中的方法锁,两个线程争夺同一个对象锁,所以会相互等待,是线程安全的。 两个线程同时访问同一个对象的同步方法,是线程安全的。 我们在前文中已经讲过了,这里: 面试官:你能说说 Synchronized实现对象锁的两种方式以及它的原理吗? 场景二:两个线程同时访问两个对象的同步方法 这种场景就是对象锁失效的场景

谈谈 Spring 中的 AutowireCandidateResolver

生来就可爱ヽ(ⅴ<●) 提交于 2020-12-22 04:31:42
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达! 接口定义  用于推断一个特定的beanDefinition是否能作为指定依赖的候选者的策略接口 ” public interface AutowireCandidateResolver { // 默认情况下直接根据bd中的定义返回,如果没有进行特殊配置的话为true default boolean isAutowireCandidate (BeanDefinitionHolder bdHolder, DependencyDescriptor descriptor) { return bdHolder.getBeanDefinition().isAutowireCandidate(); } // 指定的依赖是否是必要的 default boolean isRequired (DependencyDescriptor descriptor) { return descriptor.isRequired(); } // QualifierAnnotationAutowireCandidateResolver做了实现,判断是否有@Qualifier注解 // 一共有两种注解: // 1.Spring内置的@Qualifier注解,org.springframework.beans.factory.annotation

全网最全 | MySQL EXPLAIN 完全解读

北城余情 提交于 2020-12-22 04:23:45
点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达! EXPLAIN作为MySQL的性能分析神器,读懂其结果是很有必要的,然而我在各种搜索引擎上竟然找不到特别完整的解读。都是只有重点,没有细节(例如type的取值不全、Extra缺乏完整的介绍等)。 所以,我肝了将近一个星期,整理了一下。这应该是全网最全面、最细致的EXPLAIN解读文章了,下面是全文。 文章比较长,建议收藏。 TIPS 本文基于MySQL 8.0编写,理论支持MySQL 5.0及更高版本。 EXPLAIN使用 explain可用来分析SQL的执行计划。格式如下: {EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] {EXPLAIN | DESCRIBE | DESC} [explain_type] {explainable_stmt | FOR CONNECTION connection_id} {EXPLAIN | DESCRIBE | DESC} ANALYZE select_statement explain_type: { FORMAT = format_name } format_name: { TRADITIONAL | JSON | TREE } explainable_stmt: { SELECT statement | TABLE

Java多线程访问Synchronized同步方法的八种使用场景

 ̄綄美尐妖づ 提交于 2020-12-22 01:50:58
简介 本文将介绍7种同步方法的访问场景,我们来看看这七种情况下,多线程访问同步方法是否还是线程安全的。这些场景是多线程编程中经常遇到的,而且也是面试时高频被问到的问题,所以不管是理论还是实践,这些都是多线程场景必须要掌握的场景。 八种使用场景: 接下来,我们来通过代码实现,分别判断以下场景是不是线程安全的,以及原因是什么。 两个线程同时访问同一个对象的同步方法 两个线程同时访问两个对象的同步方法 两个线程同时访问(一个或两个)对象的静态同步方法 两个线程分别同时访问(一个或两个)对象的同步方法和非同步方法 两个线程访问同一个对象中的同步方法,同步方法又调用一个非同步方法 两个线程同时访问同一个对象的不同的同步方法 两个线程分别同时访问静态synchronized和非静态synchronized方法 同步方法抛出异常后,JVM会自动释放锁的情况 场景一:两个线程同时访问同一个对象的同步方法 分析:这种情况是经典的对象锁中的方法锁,两个线程争夺同一个对象锁,所以会相互等待,是线程安全的。 两个线程同时访问同一个对象的同步方法,是线程安全的。 1 我们在前文中已经讲过了。代码和详细讲解在《Java中synchronized实现对象锁的两种方式及原理解析》中的第二部分《方法锁》中,在此就不再重述了。 场景二:两个线程同时访问两个对象的同步方法 这种场景就是对象锁失效的场景

2020面试问题汇总-蚂蚁金服

为君一笑 提交于 2020-12-22 01:50:44
改进要点 项目描述:要简介明了,条理清晰 , 例如: 1句话描述项目背景; 1句话描述项目目标; 10句话以内描述项目主要架构; 3句话描述项目成果; 技术描述: 直击原理,描述主线; 场景描述: 需求本质; 大型网站共性需求: 通常从高并发、高可用、高性能、易伸缩、可扩展、保安全6个方面来考虑; 高并发、高可用: 通常需要服务多节点冗余部署来实现; 高性能: 通常指高吞吐、低延迟,通常可通过缩短请求处理链路和使用缓存(可能是多级缓存)来解决,其实使用缓存也是缩短请求链路的一种方式; 易伸缩: 无状态的服务最易伸缩,添加机器即可线性提升集群处理能力,对于有状态的应用,通常可以将状态拆分出来单独存储,例如单独的session服务器,就是应用会话状态的一种拆分; 可扩展: 大型网站,通常需要很多个功能模块来支撑,要可扩展,前提是需要降低服务之间的耦合性,当前业内最佳的实践方式就是微服务架构,做服务的拆分,新功能直接通过添加新的服务即可实现,且微服务目前最佳的落地形势就是ServiceMesh,让开发人员感觉是在做单机开发,将服务调用和服务治理彻底分开,从物理上解耦业务研发团队和基础架构团队,互不影响,独自演化; 保安全: 通常是通过认证和授权来实现,登录控制、访问权限控制; 微服务架构拆分: 横向请求处理层拆分: 通常可分为网关层、业务逻辑层、数据访问层、数据存储层,旁路:缓存、MQ

JVM GC耗时频频升高,我来教你排查

好久不见. 提交于 2020-12-22 00:13:32
1. 背景 多个业务线的应用出现LongGC告警 最近一段时间,经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。 2. 知识回顾 2.1 JVM堆内存划分 新生代(Young Generation) 新生代内被划分为三个区:Eden,from survivor,to survivor。大多数对象在新生代被创建。Minor GC针对的是新生代的垃圾回收。 老年代(Old Generation) 在新生代中经历了几次Minor GC仍然存活的对象,就会被放到老年代。Major GC针对的是老年代的垃圾回收。本文重点分析的CMS就是一种针对老年代的垃圾回收算法。另外Full GC是针对整堆(包括新生代和老年代)做垃圾回收的。 永久代(Perm) 主要存放已被虚拟机加载的类信息,常量,静态变量等数据。该区域对垃圾回收的影响不大,本文不会过多涉及。 2.2 CMS垃圾回收的6个重要阶段 1、initial-mark 初始标记(CMS的第一个STW阶段),标记GC Root直接引用的对象,GC Root直接引用的对象不多,所以很快。 2、concurrent-mark 并发标记阶段,由第一阶段标记过的对象出发,所有可达的对象都在本阶段标记。 3、concurrent-preclean 并发预清理阶段,也是一个并发执行的阶段。在本阶段,会查找前一阶段执行过程中

谈谈DDD本质

99封情书 提交于 2020-12-21 20:33:29
这是Bella酱的第 89 期分享 作者 | SnoWalker 来源 | 分布式朝闻道 学习DDD的时候,作为开发,我们更关心它在技术层面的东西,尤其体现在DDD的分包方式、编码技巧等方面。 自然的,我们不禁发问,用了DDD的分包,就是实践落地了DDD了么? 不卖关子,直接说答案,并不是。 用了DDD的分包,只能说满足了DDD的"形",并没有抓住DDD的"神"。DDD的神是什么,归根到底还是 面向对象,领域建模 。所谓的各种分包方式本质上还是为了满足DDD面向对象的本质,方便开发者进行代码编写而提供的一种"战术设计" 工具 。 要深入讨论这个问题,我们需要花一点时间来学习讨论一下DDD中常见的几种分包。 DDD分包概述 基于DDD的分包主要有两大流派:分层架构以及六边形架构。 分层架构以四层架构为主,基于四层架构又诞生出衍生的五层架构、六层架构等等(限于篇幅以及讨论重点,本文中我们只讨论四层架构)。 六边形架构出自 Robert C Martin(没错,就是传说中的鲍勃大叔)提出的整洁架构,后来者不断探索,又衍生出了洋葱架构。 这个过程可谓是百家争鸣。实际开发中,最为我们熟知的当属四层架构与六边形架构了,其余的各种架构都是基于这两种架构方式的变体。 四层分层架构 四层架构的分层如下图: 从上往下依次为: |- userinterface 用户界面层/表示层 |-