面试

一口气说出 OAuth2.0 的四种授权方式

流过昼夜 提交于 2020-11-08 05:13:49
上周我的自研开源项目开始破土动工了, 《开源项目迈出第一步,10 选 1?页面模板成了第一个绊脚石 》 ,密谋很久才付诸行动,做这个的初衷就是不想让自己太安稳, 技术这条路不进步就等于后退 ,必须要逼着自己学习。 项目偏向于技术实践,因此不会做太多的业务堆砌,业务代码还是在公司学习比较好。现在正在做技术的选型与储备,像比较主流的, 项目前后端分离 、 微服务 、 Springboot 、 Springcloud 等都会应用到项目中,其实很多技术我也不会,也是在反复的查阅资料求证,探索的过程技术提升真的要比工作中快很多,毕竟主动与被动学习是有本质区别的。 这几天打算先把项目的前后端分离架构搭建完成,既然是前后端分离项目就免不了做鉴权, 所以 oauth2.0 是一个我们不得不了解的知识点。 一、OAuth2.0 为何物 OAuth 简单理解就是一种授权机制,它是在客户端和资源所有者之间的授权层,用来分离两种不同的角色。在资源所有者同意并向客户端颁发令牌后,客户端携带令牌可以访问资源所有者的资源。 OAuth2.0 是 OAuth 协议的一个版本,有 2.0 版本那就有 1.0 版本,有意思的是 OAuth2.0 却不向下兼容 OAuth1.0 ,相当于废弃了 1.0 版本。 举个小栗子解释一下什么是 OAuth 授权? 在家肝文章饿了定了一个外卖,外卖小哥30秒火速到达了我家楼下

?花费6个月的时间,五面阿里java岗,最后竟然差点倒在最后HR面

情到浓时终转凉″ 提交于 2020-11-08 04:49:18
不知道多少人为了去阿里技术部看看,经历过什么,本人的为了面阿里,前后准备时间和面试一共花费了6个月的时间。 在面试前三面真的有点急促,一周内就面完了三次面试,接着就开始无尽的等待,整整等了三周左右,终于完成了四面和HR面。整个过程还是比较曲折的,技术面试还是挺考察技术深度的。现在已拿到offer。 面试问题如下:一面(主要看基础): 先自我介绍,讲讲自己基础掌握情况,以及项目经历 平时会用到哪些数据结构? 链表和数组的优缺点? 解决hash冲突的方法有哪些? 讲讲自己对HashMap的理解,以及和Weakhashmap的区别? 你刚才讲的是JDK1.7版本的实现,知道JDK1.8做了哪些改动么? 你们在微服务中用RPC通信还是REST? RPC和HTTP的关系是什么? 谈谈什么是HTTP的长连接和短连接? TCP的三次握手和四次挥手,以及为什么要三次握手,而不是二次? TCP 有哪些状态,相应状态的含义? 并发包中锁的实现底层(对AQS的理解)? 乐观锁和悲观锁的理解及如何实现,有哪些实现方式? SynchronizedMap和ConcurrentHashMap有什么区别? 如何使用阻塞队列实现一个生产者和消费者模型? 简述一下Java 垃圾回收机制? 如何判断一个对象是否存活? 什么是tomcat类加载机制? 类加载器双亲委派模型机制? 让你评价一下你自己? 二面

看了 100多份简历后,想给找工作的程序员几点建议

微笑、不失礼 提交于 2020-11-08 04:44:11
最近公司启动一个新项目,开始陆陆续续的招人,我又不幸的被部门大佬拉去做初试面试官,就是之前《 面试官:不会看 Explain执行计划,简历敢写 SQL 优化? 》里提到的大牛,总扎我心的那位。 其实跟这种牛X的人在一起工作,并不快乐反而会很累,不过真的能学到东西。和他们在一起工作,自己总有种感觉:“ 「这个我也不会啊,那个原来理解错了.....」 ”,压力很大总怕露怯,事后开始疯狂恶补。 其实我的很多文章都是在和他们聊天后,为自己查缺补漏学习写的,或许这就是大家总说的自我积累、沉淀吧! 最近面试排的很满,导致这一周都没什么时间写东西,每天的工作就是筛选HR推过来的简历,合适的约初试,面的可以在推给上边的大佬再面。 前前后后看了有 100 多份简历,有点小感触想和大家聊一聊,我觉得这个话题还是很值得和大家一起探讨的,因为它直接关乎我们的工作,影响着我们的收入,而一个 nice 的简历真可以让人眼前一亮,好感倍增。 作为一个技术渣仔,也没啥实力像大佬们那样高谈阔论,也不想已过来人的高姿态教你怎么写简历,就是想谈谈我看了100多份简历后,对一些 不太合适 简历的一点感受。 「已经做好了被喷的准备,哈哈哈~」 粉饰敲门砖 都说简历是 「敲门砖」 ,这并不是凭空瞎说的,大部分情况下面试官拿到你的简历之前,是需要经过HR初步筛选的,而非技术人员筛选技术人员的简历,额·~

微软最新面经11-6

こ雲淡風輕ζ 提交于 2020-11-08 04:23:01
【一面】 自我介绍 聊 项目 及相关知识点(半个小时) 矩阵原地旋转,并且证明 算法 的正确性 【二面】 英语自我介绍 聊 项目 返回两个有序数组中第k大的值,时间复杂度要求O(logn) 【lead面】 简单介绍一下 项目 的亮点,稍微聊了下相关的知识点 英语分享日常生活,三分钟 个人优缺点介绍 给一个数组,可修改一个值,求由连续相同值组成的子序列的最大长度 (滑动窗口) 【AA面】 聊 项目 (10分钟) 给一个大整数,和几个幸运数字,求比大整数小的全部由幸运数字组成的整数的最大值 整体来说: 1, 项目 主要考察我做了什么,有什么技术难点,可能会侧面考察基础知识。 2,我遇到的 算法题 都不难(然而我都做的很慢,有段时间没 刷题 了哈哈哈),主要的难点是把所有情况都考虑进来。过程中要及时和面试官沟通思路,面试官很nice,会引导。 3,感觉 微软 面试官各有各的风格,摸不清会出什么牌哈哈哈,自信放轻松就是最棒的! 发个 面经 攒攒人品,希望可以收到offer!🙏🏻🙏🏻🙏🏻 来源: oschina 链接: https://my.oschina.net/u/4391872/blog/4707348

Java 只有值传递!为什么?

若如初见. 提交于 2020-11-08 04:17:49
转自公众号:程序控 面试官爱问的一个基础问题: Java是值传递还是引用传递? 想必大家都对这个问题都有自己的看法,那到底事实是怎样的,我们又该如何回答面试官这个问题呢?今天咱们就来好好分析一波 值传递?引用传递? 首先,我们得先知道什么叫 值传递 ,什么叫 引用传递 ,知道这个才能理解Java到底如何做的。若想理解这两种传递需要先理解形式参数和实际参数两个概念 形式参数: 定义函数时使用的参数,用来接收函数传入参数,比如我们写个函数,函数中的参数为形式参数 (String str) { System..println(str)} 实际参数: 我们调用函数时,函数名后面括号中的参数称为实际参数,如下面例子所示 (String[] args) { A a = A()a.test()} 可以发现,当调用一个有参函数的时候,会把实际参数传递给形式参数;于是这个传递的过程便有两种情况,即 值传递和引用传递 值传递就是把参数的值给你,调用函数时将实际参数复制一份传递到函数中,这样函数内部对参数内部进行修改不会影响到实际参数;而引用传递就不一样了,它直接把参数的实际地址给调用函数了,函数内部可直接修改该地址内容,会影响到实际参数 我来举个例子,我司有一个数据库A,仅允许内部人员操作,现在有个项目需要和别的公司合作,该数据库的数据需要交给合作公司一份,我总不能直接把我司数据库A地址给他们

图文并茂,HashMap经典详解!【文末送书】

那年仲夏 提交于 2020-11-07 17:21:33
什么是HashMap? HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 HashMap的数据结构 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 文字描述永远要配上图才能更好的讲解数据结构,HashMap的结构图如下。 从上图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表或者红黑树。当新建一个HashMap的时候,就会初始化一个数组。 下面先通过大概看下HashMap的核心成员。 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { // 默认容量,默认为16,必须是2的幂 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 最大容量,值是2^30 static final int MAXIMUM_CAPACITY = 1 << 30 // 装载因子

面试 .NET 开发​,为什么也要考算法?​

限于喜欢 提交于 2020-11-07 13:04:09
最近有不少人面试,我发现很多候选人,聊起架构、框架侃侃而谈,但一写代码,就暴露真实水平。 说白了,还是基本功不够扎实。 在我看来,所有基本功中,最核心的一定是 数据结构与算法 。也因此,所有大厂面试,都必考算法题。分享我自己学算法的一些感悟吧。 1、算法不是纯粹拼智商的,而是一种技能,是可以通过科学合理的方式训练出来的能力。 2、学算法,刷题蛮干是不行的,需要遵循科学的方法。算法训练是个系统工程,得循序渐进着来,过于急功近利,反而会因做不出题而产生挫败感,带来反作用。 那会儿,我几乎把市面上所有算法教程都撸了一遍。虽说有所收获,但我发现这些资料还是更偏理论,举例也大多脱离真实的软件开发。看的时候各种明白,合上书就忘得精光。 真正让我觉得很受启发的,就是小争哥的 《数据结构与算法之美》 专栏,这门课我之前也推荐过,是我认为市面上最适用于工程师的算法课,常年稳居极客时间订阅量 TOP 1,现在订阅超过 90000 了。 拼团+口令「study2020」 立省 ¥45 原价 ¥129, 仅限今日 新人专享 ¥19.9 小争哥是前 Google 工程师,不仅实战经验丰富,而且特别会教,是个不可多得的老师。专栏现已全部更新完毕——原计划 45 篇,完结时足足写了 72 篇。我已经刷了两遍,每次看都还有新收获。 整个专栏涵盖 100+ 真实项目场景案例,王争还手绘了不少详解图(共 300 多张

阿里工作6年,熬到P7就剩这份学习笔记了,已助朋友拿到7个Offer

只谈情不闲聊 提交于 2020-11-07 12:40:28
在阿里工作了6年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P7也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等7个offer。 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 笔记目录展示: 部分内容截图: 需要文中全部资料 来源: oschina 链接: https://my.oschina.net/u/4326852/blog/4707288

这可能是全网最详细的 Java 并发锁知识点剖析了!

不问归期 提交于 2020-11-07 12:36:16
花了几天时间熬夜整理出来的并发锁知识点,我说是全网最详细就是全网最详细,不允许反驳~ 话不多说直接开始,开始之前,为方便大家记忆,记得点赞收藏加关注哦 ,需要下载PDF版本的朋友可以点一点下方链接找我免费领取 链接: 1103806531 暗号:CSDN 1. 并发锁简介 确保线程安全最常见的做法是利用锁机制(Lock、sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必然是原子性的,线程安全的。 在工作、面试中,经常会听到各种五花八门的锁,听的人云里雾里。锁的概念术语很多,它们是针对不同的问题所提出的,通过简单的梳理,也不难理解。 1.1. 可重入锁 可重入锁,顾名思义,指的是线程可以重复获取同一把锁。即同一个线程在外层方法获取了锁,在进入内层方法会自动获取锁。 可重入锁可以在一定程度上避免死锁。 ReentrantLock 、ReentrantReadWriteLock 是可重入锁。这点,从其命名也不难看出。 synchronized 也是一个可重入锁。 【示例】synchronized 的可重入示例 synchronized void setA ( ) throws Exception { Thread . sleep ( 1000 ) ; setB ( ) ; } synchronized void

码农死磕这份Java高级开发文档,成功‘挤‘进一线大厂,我把它给要来了!

最后都变了- 提交于 2020-11-07 12:35:38
前言 拿到一份offer比什么都重要,所以笔者专门花了近一个月的时间整理好了一份专门为Java面试而生的总结,注意的是笔者仅仅对面试技术方面的题目进行的总结,至于如何去和面试官去聊,怎么聊,聊得嗨,这里笔者就不谈了,因为这方面并不是笔者擅长的。 接下来我就把我这些年“圈子里”的一些资源分享出来 ,需要的看文末我免费分享给你。 Java 知识梳理 熟练掌握java是很关键的,大公司不仅仅要求你会使用几个api,更多的是要你熟悉源码实现原理,甚至要你知道有哪些不足,怎么改进,还有一些java有关的一些算法,设计模式等等。 JAVA基础 JAVA异常分类及处理 JAVA反射 JAVA注解 JAVA内部类 JAVA泛型 JAVA序列化(创建可复用的Java对象) JAVA多线程并发 JAVA并发知识库 JAVA线程实现/创建方式 4种线程池 线程生命周期状态) 终止线程4种方式 sleep与wait区别 start与run区别 JAVA后台线程 JAVA锁 线程基本方法 线程上下文切换 同步锁与死锁 线程池原理 JAVA阻塞队列原理 CyclicBarrier、CountDownLatch、Semaphore的用法 volatile关键字的作用(变量可见性、禁止重排序) 如何在两个线程之间共享数据 ThreadLocal作用(线程本地存储)