面试

【福利来了】B站 Java 精选视频,都帮你整理好了,拿去用!!!

人盡茶涼 提交于 2021-02-12 06:42:04
大家好,今天帮大家整理了一下b站上java相关的精华视频,供大家使用, 文末有福利 !!! 一、Java基础 尚硅谷宋红康(强力推荐) https://www.bilibili.com/video/av48144058 动力节点Java零基础教程视频 https://www.bilibili.com/video/av11361088 北京尚学堂高琪(推荐) https://www.bilibili.com/video/av30023103 求知讲堂:2019求知讲堂零基础Java入门编程视频教程高口碑无废话无尿点 https://www.bilibili.com/video/av76235341 尚硅谷Java8新特性+JUC+NIO https://www.bilibili.com/video/av71563078 二、数据结构与算法 郝斌-数据结构入门 https://www.bilibili.com/video/av6159200 尚硅谷韩顺平图解Java数据结构与算法 https://www.bilibili.com/video/av54029771 数据结构与算法基础-java版(颜群) https://www.bilibili.com/video/av33835237 清华大学-邓俊辉MOOC数据结构与算法全套 https://www.bilibili.com

那些程序员爆笑段子,扎心了…

不羁岁月 提交于 2021-02-12 04:57:22
1、特殊 “2020是属于程序员的一年。” “怎么说?” “2020-1024=996。” 2、真相 “你们程序员是不是没见过下班时候的太阳?” “也不是啦,夏天的时候还是能看到的。” “哦哦,夏天黑得比较晚。” “不是,是天亮得比较早。” 3、理由 一个程序员去面试。 面试官:你毕业到现在才两年,履历上三年经验是怎么来的? 程序员:加班来的。 4、愿望 一位程序员无意中救了一个妖怪,妖怪说可以满足他一个愿望,条件是:无论什么愿望,他的仇人都将得到他所得到东西的两倍。 程序员点点头说:我希望每天睡满12小时。 5、区别 很多男孩子听到Mac觉得是电脑; 很多女孩子听到Mac觉得是口红; 程序员听到Mac觉得是物理地址。 6、资质 程序员简直是世界上最适合谈恋爱的人:他们整天都在思考一个问题:我又哪里做错了。 7、结果 程序员A:我去相亲网站找女朋友了。 程序员B:找到了吗? 程序员A:找到了他们页面的一个bug。 8、失望 我本来以为和一个做IT的书呆子女谈恋爱会很有趣。 直到她在脱下我的内裤后大喊:“404!” 9、方案 一句话教你成为IT专家:重启解决90%的问题,重装解决99%的问题,重买解决100%的问题。 10、对策 四个工程师同乘一辆车,车打不着火。 机械工程师:启动装置坏了。 电气工程师:电池坏了。 化学工程师:油不干净。 IT工程师:要不咱们先下车再上车试试? 11

【LiteOS】STM32F103-LiteOS移植教程(详细篇)

£可爱£侵袭症+ 提交于 2021-02-12 03:43:21
总览 本文基于STM32F103C8T6,详细讲述华为LiteOS的移植过程。开发工具是MDK5。LiteOS官方已经适配过cortex M系列内核的单片机,因此移植过程非常简单。 LiteOS有两种移植方案:OS接管中断和非接管中断方式。接管中断的方式,是由LiteOS创建很管理中断,需要修改stm32启动文件,移植比较复杂。STM32的中断管理做的很好,用不着由LiteOS管理中断,所以我们下边的移植方案,都是非接管中断的方式的。中断的使用,跟在裸机工程时是一样的。 在target_config.h 中将 LOSCFG_PLATFORM_HWI 宏定义为 NO,即为不接管中断方式。该值默认为NO 。 移植的主要步骤如下: 1、添加内核文件 2、配置头文件 3、移除systick和pendsv中断 4、修改target_config.h 5、重定向printf函数(一般在裸机工程中就会实现) 说明:内核运行过程中会通过串口打印一些错误信息。如果日志功能开启、而又没有重定向printf函数的话,则会导致日志打印出错,程序异常卡死。之前我就是没有重定向printf函数,结果出了莫名其妙的问题,程序异常卡死在创建任务的地方。 下边我们通过新建一个裸机工程,一步步讲解如何进行移植。以下是详细过程。 一、创建裸机工程 我们这次使用的是一个STM32F103C8T6的最小系统板

Java 垃圾回收机制

微笑、不失礼 提交于 2021-02-12 03:14:51
垃圾回收机制是 Java 非常重要的特性之一,也是面试题的常客。它让开发者无需关注空间的创建和释放,而是以守护进程的形式在后台自动回收垃圾。这样做不仅提高了开发效率,更改善了内存的使用状况。 今天本文来对垃圾回收机制进行讲解,主要涉及下面几个问题: 什么是堆内存? 什么是垃圾? 有哪些方法回收这些垃圾? 什么是分代回收机制? 什么是 Java 堆内存 堆是在 JVM 启动时创建的,主要用来维护运行时数据,如运行过程中创建的对象和数组都是基于这块内存空间。Java 堆是非常重要的元素,如果我们动态创建的对象没有得到及时回收,持续堆积,最后会导致堆空间被占满,内存溢出。 因此,Java 提供了一种垃圾回收机制,在后台创建一个守护进程。该进程会在内存紧张的时候自动跳出来,把堆空间的垃圾全部进行回收,从而保证程序的正常运行。 那什么是垃圾呢? 所谓“垃圾”,就是指所有不再存活的对象。常见的判断是否存活有两种方法:引用计数法和可达性分析。 引用计数法 为每一个创建的对象分配一个引用计数器,用来存储该对象被引用的个数。当该个数为零,意味着没有人再使用这个对象,可以认为“对象死亡”。但是,这种方案存在严重的问题,就是无法检测“循环引用”:当两个对象互相引用,即时它俩都不被外界任何东西引用,它俩的计数都不为零,因此永远不会被回收。而实际上对于开发者而言,这两个对象已经完全没有用处了。 因此

新手一看就懂的线程池

别说谁变了你拦得住时间么 提交于 2021-02-12 01:47:34
相信大家也能感受到,其实用多线程是很麻烦的,包括线程的创建、销毁和调度等等,而且我们平时工作时好像也并没有这样来 new 一个线程,其实是因为很多框架的底层都用到了线程池。 线程池是帮助我们管理线程的工具,它维护了多个线程,可以降低资源的消耗,提高系统的性能。 并且通过使用线程池,我们开发人员可以更好的把精力放在任务代码上,而不去管线程是如何执行的,实现任务提交和执行的解藕。 本文将从是何、为何、如何的角度来讲解线程池: 线程池是什么 为什么要用线程池 怎么用线程池 线程池 Thread Pool 线程池是一种池化的技术,类似的还有数据库连接池、HTTP 连接池等等。 池化的思想主要是为了减少每次获取和结束资源的消耗,提高对资源的利用率。 比如在一些偏远地区打水不方便的,大家会每段时间把水打过来存在池子里,这样平时用的时候就直接来取就好了。 线程池同理,正是因为每次创建、销毁线程需要占用太多系统资源,所以我们建这么一个池子来统一管理线程。用的时候从池子里拿,不用了就放回来,也不用你销毁,是不是方便了很多? Java 中的线程池是由 juc 即 java.util.concurrent 包来实现的,最主要的就是 ThreadPoolExecutor 这个类。具体怎么用我们下文再说。 线程池的好处 在多线程的第一篇文章中我们说过,进程会申请资源,拿来给线程用,所以线程是很占用系统资源的

真假寒冬,今年硅谷就业形势一片大好?

自闭症网瘾萝莉.ら 提交于 2021-02-12 00:52:39
今年形势大好? 昨天有硅谷求职前线UIUC 的小伙伴发来消息,听说今年秋招的求职结果都不错,很多人都拿到了不错的offer,说好唬人的互联网寒冬呢? (参加了秋招的小伙伴,大家可以把自己求职的情况在留言区说一说) 所以,现在硅谷的就业形势一片大好,寒冬已过,正在回暖?不过秋招才刚结束,还没有数据支持这个说法,这也许只是这几家公司的小个别情况。 比如,谷歌和亚马逊都刚宣布了扩招计划。 11月13日,亚马逊宣布,将在纽约增加25000个工作岗位,在美国北弗吉尼亚州增加另外25000个工作岗位。谷歌首席财务官11月12日也在华尔街日报举办的DLive会议上表示,谷歌计划在接下来10年内,在纽约增加14000个工作岗位。这几万人的扩招,怎么都得算到春秋招上一把一把的收人。 亚马逊今年刚建成的新总部,另有两个位于分别位于纽约长岛和弗吉尼亚州阿林顿的新总部也正在建设中。 而Pinterest也被爆计划在明年上市,所以可能也正在为准备上市而扩招。 这几家公司今年都可能是因为扩招的缘故发了很多offer。 据传,秋招真的挺多人拿到Pinterest的offer。 所以今年就业形势好,也可能只是因为这几家公司在扩招。 今年频频传消息网曝了中美多家大型互联网公司都在裁员,虽然硅谷也一直在传寒冬论,但也许这都只是正常换血现象。 2012-2017美国CS专业工程师就业人数情况 从上表看

Java泛型

天涯浪子 提交于 2021-02-11 23:00:33
之前面试和这两天用到泛型解决了一些问题,才发现自己对泛型的了解只停留用的时候会想起来一点点....没有真正的准确梳理泛型,所以想写一写总结一下自己对泛型对理解 1、代码用泛型的好处 在写代码的时候经常不同数据类型,而泛型可以统一数据类型,便于操作。 将运行时的异常提前到了编译时,提高了效率(在jdk1.5中引入了新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法类型)。 避免了强制类型转换。 实现代码到模版化,把数据类型当作参数传递,提高了可重用性。 2、泛型 泛型,其实是"参数化类型"。泛型的本质是 参数化类型 (在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。换句话说在泛型使用过程中,操作数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别成为泛型类,泛型参数,泛型方法。 在jdk 1.5之前,没有泛型的情况下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,这种转换需要开发者对实际参数类型可以预知的情况下进行。对于强制类型转换错误的情况,编译气可能不提示错误,在运行的时候才出现异常。这时候泛型的好处就体现出来,使用泛型就可以首先通过IDE进行代码类型初步检测,然后在编译阶段进行编译类型检查,保证了类型转换的安全性;并且所有的强制转换都是自动和隐式的

一口气说出“6种”延时队列实现方法,面试官也得服

倾然丶 夕夏残阳落幕 提交于 2021-02-11 21:53:31
下边会介绍多种实现延时队列的思路。其实哪种方式都没有绝对的好与坏,只是看把它用在什么业务场景中,技术这东西没有最好的只有最合适的。 一、延时队列的应用 什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。 延时队列在项目中的应用还是比较多的,尤其像电商类平台: 1、订单成功后,在30分钟内没有支付,自动取消订单 2、外卖平台发送订餐通知,下单成功后60s给用户推送短信。 3、如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存 4、淘宝新建商户一个月内还没上传商品信息,将冻结商铺等 。。。。 上边的这些场景都可以应用延时队列解决。 二、延时队列的实现 我个人一直秉承的观点:工作上能用 JDK 自带 API 实现的功能,就不要轻易自己重复造轮子,或者引入三方中间件。一方面自己封装很容易出问题(大佬除外),再加上调试验证产生许多不必要的工作量;另一方面一旦接入三方的中间件就会让系统复杂度成倍的增加,维护成本也大大的增加。 1、DelayQueue 延时队列 JDK 中提供了一组实现延迟队列的 API ,位于 Java.util.concurrent 包下 DelayQueue 。 DelayQueue 是一个 BlockingQueue (无界阻塞)队列,它本质就是封装了一个

深圳Shopee团队内推

余生颓废 提交于 2021-02-11 21:31:57
有兴趣的朋友, 公众号发送【 虾皮 内推 】或者 扫描文章 末尾 二维码 添加微信, 联系KK大佬即可。 我也可以为你提供必要的帮助, 包括: 公司介绍 简历修改 必要的面试辅导等 有需要的朋友可以联系微信, Shopee 期待你的加入。 前端工程师 是Shopee团队的 重要组成部分 ,我们与后端工程师、设计师们紧密合作,实现高质量的Web应用。 我们使用各种现代化的前端工具,例如React,Vue.js等,并沉淀了大量的最佳实践经验。 我们中的部分人专注于架构设计,部分人专注于效率和工程化体系,但是我们中的所有人都是专业的JavaScript开发者。 初级前端开发工程师 外企氛围,蓝海市场,大牛多多,15天年假 15k-30k / 深圳 / 经验1-3年 / 本科及以上 工作职责: 负责网站前端开发,编写高质量、可维护性的代码,并撰写相关技术文档; 负责线上系统的维护和管理,保障系统稳定运行; 不断优化现有产品,提高系统速度、稳定性和可扩展性,不断提升用户体验; 研究和探索最新的前端技术,并应用到实际业务中; 参与团队基础技术、应用框架体系和工程化体系建设。 Preferred Skills 熟悉JavaScript、HTML、CSS等技术; 至少熟悉一种前端开发框架,并有实际的开发经验; 了解不同浏览器之间的特性差异,能够解决常见的浏览器兼容性问题;

Java旅游点评项目笔记之项目搭建和实现

我与影子孤独终老i 提交于 2021-02-11 20:32:05
不点蓝字,我们哪来故事? 驴窝窝旅游点评项目 项目目的 项目的理解和技术技巧的熟练使用;月薪可达8K水平; 对原来技术的掌握,项目中的技术请无死角掌握; 想一下项目可以怎么去拓展,去实现新功能; 独立完成新的需求,举一反三;自主学习,自主思考;不要局限于老师讲的; 对技术需求的理解和掌握,怎么用好工具完成需求; 易忘,要在固定的时间复习; 1, 项目的总体安排 ; 2, 项目的重点 : 1,本项目的重点不是去制作一个完整旅游点评项目,而是了解整个旅游点评项目各个流程和需求,对实际项目开发有一个较为深刻的理解; 2,掌握项目中的一些重要的第三方工具/框架;比如bootstrap;uploadify;ueditor;等的使用; 3,掌握提升自我价值的知识点;比如redis,dubbo,mongodb,elasticsearch 4,掌握如何从0到1开发项目。 3, 项目的学习方法 : 1,深入学习和理解项目的需求,和一个产品的设计理念; 2,这个项项目,重点不要纠结于细节的代码实现,要从更大的范围去理解一个项目/产品的开发过程; 3,理解项目中的相关业务流程,学会自己去阅读第三方开发文档等(分享/第三方登录/短信发送); 4,从原理上掌握更高级的工具的使用,重点是要理解,什么时候需要用到这些东西,和使用这些东西的基本方式; 演示项目 技术路线 我们在做架构的时候并没有讲到SSH,SSM