面试题
文章平均质量分 68
程序员大航子
现就职于抖音集团 | 在南方发展的不正经东北人 | 互联网苟且偷生的JAVA开发 | 面试人数超200人 | 关注我不迷路
展开
-
刷穿力扣 | 最大正方形
最大正方形原创 2022-09-27 23:09:02 · 625 阅读 · 1 评论 -
史上最强优先级队列教程PriorityQueue、DelayedWorkQueue
写这篇文章的目的是,我们寝室大哥,龙哥正在培训java,为了让龙哥更好的理解堆这个数据结构的内容,模拟他以后面试经历的场景。面试经过面试官: 你好,欢迎再次参加面试,几天不见,感觉头发又少了呢?龙哥: 本来头发就少,又当了程序员,哎。面试官: 我们回归正题,上回说到ScheduledThreadPoolExecutor,那ScheduledThreadPoolExecutor里面用的什么阻塞队列?龙哥: 这个说起来就有点复杂了,首先我们通过ScheduledThreadPoolExecuto.原创 2021-10-31 20:12:01 · 3378 阅读 · 4 评论 -
史上最强HashMap面试教程
前言写这篇文章的目的是因为我大学四年的室友,龙哥在培训java,刚好最近学习HashMap,于是我写一篇文章来模拟他以后面试被问到HashMap的场景;另外就是因为HashMap的使用确实广泛,深受面试官的喜爱,大厂的面试官也有很多会用HashMap来考察你的基础到底如何。面试经过**面试官:**我们开始吧,看发型就知道是老程序员了,自我介绍一下吧。**龙哥:**我叫龙哥,刚过完三十大寿。平时喜欢打篮球,优势是身体好,可以996。**面试官:**嗯,还不错嘛。都30了,集合框架肯定熟悉吧,我们先原创 2021-10-27 18:35:10 · 87403 阅读 · 14 评论 -
详解优先级队列
优先级队列优先级队列,这个数据结构可以理解为一个箱子,给定一个比较的规则,然后比较的比较有限的元素,会沉的比较下面,当要取出一个元素的时候,最上面的元素就会率先被取出来。举个例子。public static void main(String[] args) { PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(((o1, o2) -> o2 - o1)); priorityQueue.o原创 2021-05-20 22:58:12 · 2477 阅读 · 3 评论 -
二叉搜索树的完整操作
二叉搜索树的完整操作引言二叉搜索树,又叫二叉查找树(Binary Search Tree);请问你思考过没有?有了哈希表,为什么我们还需要二叉树?其中最主要的一个原因,就是哈希表如果要按照顺序输出的时候,就比较麻烦,而二叉树的特殊形态,二叉搜索树就比较简单了,只需要中序遍历就好了。而hashmap的底层红黑树其实也是一种特殊的二叉搜索树;也许有的同学很想啃下来红黑树,当面试的时候面试官问起hashmap源码的时候做到游刃有余,那么二叉搜索树算是前面的一个小BOSS。什么是二叉搜索树二叉搜索树是原创 2021-05-19 23:58:22 · 843 阅读 · 2 评论 -
一文击穿几数之和系列问题
一文击穿几数之和系列问题最近又朋友和我分享他们的大厂面试算法题的时候,我发现其实有很多题多是考察双指针的,所以双指针这块的题应该重点掌握一下,双指针大概用法有类似快慢指针来求中点或者环状问题,另外一部分的左右指针,n数之和就是经典的题目中的经典题目。二数之和题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。原创 2021-05-10 23:23:25 · 225 阅读 · 0 评论 -
你真的会二分查找算法么
引子我记得我在京东的时候,面试过大概10个候选人,当我问到算法的时候,大部分人说我只会写简单的排序算法和二分查找之类的算法。其实,我先不说排序算法就有十多种,二分查找,你确定你真的会么?原理很简单,细节是魔鬼。详解所谓二分查找算法是针对一个排序数组的,因为数组有顺序且有固定的索引,所以你可以运用这种折半查找的算法,它的原理有点类似我们玩的一种猜数字的游戏。就是我心中默想一个数字,你说一个数,我告诉你是大了还是小了,那么怎么猜效率才最高呢?那就是每次取中间的数猜,一次就排出掉剩余答案的一半,这样就原创 2021-05-07 12:52:43 · 394 阅读 · 2 评论 -
荷兰国旗问题
引子我在北京的一个现任职京东零售的一个朋友,最近投了阿里巴巴的简历,面试官一面就考察了一道算法题,我与他交流了一下,发现一道荷兰国旗的问题。假如有一个数组,里面的元素由红、白、蓝三个颜色组成,请你写出一个算法,使数组的元素按照红、白、蓝顺序分布。至于为什么叫荷兰国旗,你对比一下,荷兰国旗的三色分布就知道了。遗憾的是,我这个朋友没有答出来,于是和阿里失之交臂。思路见到这种题,首先第一反应就是是不是能在一次遍历搞定,就是时间复杂度在O(n)解决。先把这个问题简单化一点,如果这个数组只有两个颜色原创 2021-04-27 17:41:31 · 506 阅读 · 1 评论 -
刚入职的阿里巴巴,我是怎么学习算法的
先自我介绍一下,我是一个在94年的互联网苟且偷生的打工人,目前就职于阿里巴巴,学习算法大概有两年多时间。我身边有很多朋友或是读者都在询问我算法应该怎么入门,毕竟不管你喜欢不喜欢,进大厂估计每一个程序员都或多或少想过或者向往过这些事,毕竟动辄几万的月薪是一般普通公司给不起的,而大厂面试,面试官尤其爱拷问算法,这是一个摆脱不了的事情。而算法对于某些同学来说,看起来就好像遥不可及的一样,我身边的朋友大部分都知道算法的重要性,可就是不知道从何入手。久而久之,死活是迈不进那道门。据我了解,大部分人开始原创 2021-04-17 13:23:12 · 512 阅读 · 9 评论 -
一文团灭打家劫舍系列面试题
小龙是一个资深程序员,年纪轻轻头发就凋零不堪了,看到身边的朋友们在大厂一个个拿到了高薪,决定出去面试看看,毕竟看发型咱就是资深程序员不是…这不,马上就迎来了一家国内某大厂的面试邀请,小龙怀着忐忑的心情复习了一周,走进了面试的会议室,咦,,,这个面试官好凶,,不会问一些有的没的吧面试官:**龙是吧?说说你的经历。小龙:你好,面试官,我叫**龙,巴拉巴拉…很希望能加入咱们公司。面试官:嗯,你还没30,怎么看着和40似的。小龙:额,平时敲代码熬夜比较多,嗯… 买买皮。面试官:好,那么我原创 2021-04-15 22:43:37 · 293 阅读 · 1 评论 -
select *和select全部字段的区别是什么
借鉴自boss直聘上一篇推荐文章1、查询效率上:select * 在系统解析的时候会多一步从系统表获取具体字段的步骤,因此会比select 全部字段多花时间,效率稍低。2、查询结果上:在表结构不修改的情况下结果相同,但是后者的顺序可以调整,前者则固定;而如果修改了表结构,前者能够获得新表结构的所有字段,后者则会在修改字段名或删除字段时报错,会在增加字段时不会输出新字段。3、应用场景上:select * 效率稍低但是能应对频繁调整的表结构,适应力强,可应用于开发环境,仅极少数特殊业务场景会在生产环境.原创 2021-03-16 15:43:05 · 10914 阅读 · 3 评论 -
【力扣日常】最后一块石头的重量
题目有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到 1,所以数组转原创 2020-12-30 20:39:48 · 255 阅读 · 1 评论 -
力扣数据结构 | 有效的括号
有效的括号这道题比较简单,但是很有代表性,和计算器大体实现的原理差不多题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出:原创 2020-12-08 11:29:37 · 332 阅读 · 0 评论 -
大厂真题 | 最长公共子序列
最长公共子序列这道题是笔者在滴滴面试的过程中遇到的真题题目给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串原创 2020-11-20 17:04:25 · 604 阅读 · 1 评论 -
剑指大厂 | 线程的交替打印
转载本文章请标明作者和出处本文出自《爱喝纯净水的南荣牧歌》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们一个线程持有1到26,一个线程持有a到z,如何让这两个线程交替打印,输出1 a 2 b … 26 z这道题最简单的做法就是使用信号量Semaphore。Semaphore中初始的许可个数是Semaphore s1 = new Semaphore(1),构造函数中的数字。每执行一次acquire()方法,则需要消耗一个许可,每执行一次.原创 2020-09-07 09:36:11 · 464 阅读 · 0 评论 -
剑指大厂 | 如何让线程按照顺序执行
转载本文章请标明作者和出处本文出自《爱喝纯净水的南荣牧歌》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们这道题很简单,主要考察你对join函数的认知,一般会在大厂面试的时候第一轮电话面试的时候考察。ps: join方法要在start之后调用,调用之后,当前线程会等待join的线程执行之后再执行。 public static void main(String[] args) throws InterruptedException {.原创 2020-09-06 15:58:16 · 313 阅读 · 1 评论