面试

关于 TCP/IP,必知必会的十个问题!

Deadly 提交于 2020-11-22 13:23:21
点击蓝色“Java高级架构”关注我哟 加个“星标”,干货推送! 来源:https://juejin.im/post/6844903490595061767 本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。 TCP/IP十个问题 TCP/IP十个问题 一、TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。 基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。 TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。 上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息

【原创】我还是很建议你用DelayQueue搞定超时订单的(1)

北城以北 提交于 2020-11-22 13:22:36
【原创】我还是很建议你用DelayQueue搞定超时订单的(1) 我就是那个人见人爱的 锦成同学,我是java进阶架构师社区的特邀作者, 今天为大家带来新的一篇小知识,祝各位宝宝能学到新知识...更上一层楼..... 一、用三根鸡毛做引言 真的! 不骗你们的喔~ 相信大家都遇到类似于:订单30min后未支付自动取消的开发任务 那么今日份就来了解一下怎么用延时队列 DelayQueue搞定单机版的超时订单 二、延时队列使用场景 那么什么时候需要用延时队列呢?常见的延时任务场景 举栗子: 订单在30分钟之内未支付则自动取消。 重试机制实现,把调用失败的接口放入一个固定延时的队列,到期后再重试。 新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。 用户发起退款,如果三天内没有得到处理则通知相关运营人员。 预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议。 关闭空闲连接,服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。 清理过期数据业务。比如缓存中的对象,超过了空闲时间,需要从缓存中移出。 多考生考试,到期全部考生必须交卷,要求时间非常准确的场景。 三、解决办法多如鸡毛 定期轮询(数据库等) JDK DelayQueue JDK Timer ScheduledExecutorService 周期性线程池 时间轮(kafka) 时间轮

【原创】Java并发编程系列05 | 深入理解volatile

自古美人都是妖i 提交于 2020-11-22 13:21:44
【原创】Java并发编程系列05 | 深入理解volatile 收录于话题 #进阶架构师 | 并发编程专题 12个 思维导图 写在前面 本篇文章介绍并发编程中常用的volatile关键字。主要介绍两方面内容: volatile有哪些特性,可以用来做什么? volatile实现原理。 1. 保证可见性 volatile保证了不同线程对volatile修饰变量进行操作时的可见性。 对一个volatile变量的读,(任意线程)总是能看到对这个volatile变量最后的写入。 一个线程修改volatile变量的值时,该变量的新值会立即刷新到主内存中,这个新值对其他线程来说是立即可见的。 一个线程读取volatile变量的值时,该变量在本地内存中缓存无效,需要到主内存中读取。 举例: 中断线程时常采用这种标记办法。 boolean stop = false;// 是否中断线程1标志 //Tread1 new Thread() { public void run() { while(!stop) { doSomething(); } }; }.start(); //Tread2 new Thread() { public void run() { stop = true; }; }.start(); 目的: Tread2设置stop=true时,Tread1读取到stop=true

再见~ 蚂蚁金服!(已拿offer)

北慕城南 提交于 2020-11-22 13:08:07
其实下半年的这段时间是大厂招聘、就业者求职跳槽的黄金时期,但今年因为疫情的原因,很多人的辞职计划被搁浅了下来。 但是也有一些小伙伴在这种困境下也拿到了一线互联网大厂的offer,比如我的一位同学,就在最近成功跳槽到了蚂蚁金服 (虽然上市计划搁浅了) ,但是通过他的情况可以看出来,互联网大厂对于人才的诉求依然很强烈。 此时很多人会想,在这种大环境都不好的情况下,他是如何跳槽到蚂蚁金服的,我也偷偷问了他,他给我发了一份他的学习计划表。 是他从年中辞职后,前后花了将近两个月,才摸索出由浅入深的学习路径,夯实基础,整理项目经验,才能在困境中激流勇进拿到offer。 今天也邀请到了这位 大佬 给我们分享他当时的 学习路径和技术栈 ,不管是对想精进业务,还是打算跳槽刷题都有帮助! 这份资料包括: IDEA、Java语法、面向对象、异常、常用类、集合、IO流、多线程、网络编程、JUnit、枚举、注解、反射机制、CSS、HTML、JavaScript、JQuery、ajax、Javaweb、MySQL、JavaEE、SSM框架、springboot、算法、Git、maven、Linux、设计模式、多线程与高并发、视频教程、视频源码、实战项目、电子书、简历模板、高频面试题等等资源。 高频面试题及答案 : SpringBoot,SpringCloud面试汇总 集合框架面试题 设计模式面试题

藏不住了!字节跳动限定“Redis深度历险“笔记,有什么?

纵然是瞬间 提交于 2020-11-22 10:56:09
前言 我在程序员这个圈子里包括身边的程序员朋友里经常听到一句话,那就是“程序员这个职业都是吃青春饭的”,为什么这句话在网络上这么多人流传呢,我大概归纳了一下。 大概分为三点:首先这个行业毕业到30岁也工作了几年,如果不是非常热爱的,很多人会产生厌倦心理,从而转业,改行。其次就是这个行业普遍加班很多,工作强度大,很多年纪轻轻的小伙子短短几年就熬成了大叔,而且因为这个行业交流不多,导致很多该行业的人不太会沟通交流,随之的就是只能看着别人过七夕了,在这心疼这些人10秒钟。最后一点,也是最重要的一点,其实有很多人在公司里就是混日子的,不想上进,不想学习,俗称“我们只是代码的搬运工”。 为什么说是最重要的一点呢,因为这个行业的技术发展非常迅速,如果你不思进取,只想着混日子,那就只能等着被淘汰了,我觉得不单单是这个行业,很多行业都是学无止境的,持续提升自己,才能得到更好的! 经我的一位铁哥们透露,这份字节跳动内部限定的“redis深度历险笔记”,有着非常齐全的知识点和非常强大的核心原理和应用实践。 文章中会主要介绍一下其中重要的知识点和BAT常问的redis面试题,由于文章的限制,不能完全展示给大家,有需要这份“Redis深度历险笔记+BAT常问的面试题”的朋友们, 点击这里 即可快速领取! Redis深度历险笔记 Redis是用来干什么的 我们要学习Redis

我差点去字节跳动做算法了!

别来无恙 提交于 2020-11-22 10:30:19
我有个朋友,他坚持 刷题2个月 ,终于去了他梦寐以求的大厂, 薪资涨幅非常可观 ,期间面字节跳动还遇到了算法原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给定题编程,来考察数据结构和算法的扎实程度。 众所周知,算法确实越来越重要了,我认识不少以前履历普通的,通过刷题改变了自己进入大厂的轨迹。 因为据我所知很多大厂技术面试的要求是: 技术要好,计算机基础扎实,熟练掌握算法和数据结构,语言不重要,熟练度很重要。 每一轮技术面试都可能考代码,不只考算法,但一定会考算法。 那你知道为什么要考算法么?其实核心是看候选人是不是足够聪明。考算法一般会分两步,第一步是直接让你说思路,第二步是让你直接上手写代码。很多大厂的算法题一般对应的是 LeetCode 中级模式,要通过面试,你肯定得花时间好好准备。 所以说算法是其中必要的一个环节! 然而在我看来,这已经是相对来说比较公平的方式了。从项目来说,每位程序员做的差异非常大,很难通过你以往的项目经验判断出你的真正潜力。 但是对于算法来说,大家起点都一样,这就像高考,通过考核算法题是可以看出你的编程内功是否深厚的,而且还能多维度考察你的其他能力,比如:逻辑思维清晰与否、debug 能力如何、编码习惯怎样、是否能写出可维护的代码等等。 并且算法根基不扎实,不仅难过面试,对于代码性能的提升、编程语言的驾驭也会比别人弱很多

刷题2个月,工资25k,有它真香!

只谈情不闲聊 提交于 2020-11-22 09:52:35
小编一直不知道我在大家心目中的定位是什么,但 小 编 内心其实是把自己定义为一个 『工具人』 的。 可能是因为 小 编 自己本身就是程序员, 所以更能理解程序员的不易吧。 就是希望大家看了能够有所收获,可以找到一份满意的工作,拿到一个不错的薪水,然后可以推荐推荐我。 好了言归正传, 抖音年底扩招的消息, 相信大家应该都听说了吧,我真心觉得这是一个不错的机会,所以希望大家年前能够冲一冲,为自己拿下一个不错的岗位。 所以今天,就来分享一点算法干货,因为像这种大场面试, 算法跑不掉的。 干货第1步: 知己知彼 俗话说,知己知彼才能百战不殆。 算法虽然重要,但是了解大厂HR面试时的心理活动同样重要。 面试为什么考算法? 无非是算法 最能说明一个人的综合实力。 而大厂考算法一般也会分两步,第一步:让你直接说思路;第二步:让你实操写代码。 通过这两步,就可以看出你的编程内功是否深厚,除此之外还能多维度考察你的其他能力,比如:逻辑思维清晰与否、debug 能力如何、编码习惯怎样、是否能写出可维护的代码等等...... 既然了解了HR的内心活动,那接下来努力的方向就有了。 干货第2步: 怎样快速学习 算法面试,可以靠刷题通过吗? 肯定能! 但是只靠刷题去提升算法能力,一是进度慢要耗费大量时间,二是别忘了面试时不仅要考逻辑,还会考实操,这时候刷题的弊端就出来了, 容易漏掉细节从而频频出错。

自定义注解!绝对是程序员装大佬的利器!!

匆匆过客 提交于 2020-11-22 09:50:31
作者 l Hollis 来源 l Hollis(ID:hollischuang) 相信很多人对Java中的注解都很熟悉,比如我们经常会用到的一些如@Override、@Autowired、@Service等,这些都是JDK或者诸如Spring这类框架给我们提供的。 在以往的面试过程中,我发现,关于注解的知识很多程序员都仅仅停留在使用的层面上,很少有人知道注解是如何实现的,更别提使用自定义注解来解决实际问题了。 但是其实,我觉得一个好的程序员的标准就是懂得如何优化自己的代码,那在代码优化上面,如何精简代码,去掉重复代码就是一个至关重要的话题,在这个话题领域,自定义注解绝对可以算得上是一个大大的功臣。 所以, 在我看来,会使用自定义注解 ≈ 好的程序员。 那么,本文,就来介绍几个,作者在开发中实际用到的几个例子,向你介绍下如何使用注解来提升你代码的逼格。 基本知识 在Java中,注解分为两种,元注解和自定义注解。 很多人误以为自定义注解就是开发者自己定义的,而其它框架提供的不算,但是其实上面我们提到的那几个注解其实都是自定义注解。 关于"元"这个描述,在编程世界里面有都很多,比如"元注解"、"元数据"、"元类"、"元表"等等,这里的"元"其实都是从meta翻译过来的。 一般我们把 元注解理解为描述注解的注解,元数据理解为描述数据的数据,元类理解为描述类的类 … 所以,在Java中

我差点去字节跳动做算法了!

假装没事ソ 提交于 2020-11-22 09:49:53
大家好,我是程序猿尖。 我一直不知道我在大家心目中的定位是什么,但我内心其实是把自己定义为一个 『工具人』 的。 可能是因为我自己本身就是程序员, 所以更能理解程序员的不易吧。 所以,我尽量不写水文, 只分享干货。 就是希望大家看了能够有所收获,可以找到一份满意的工作,拿到一个不错的薪水,然后可以推荐推荐我。 好了言归正传, 抖音年底扩招的消息, 相信大家应该都听说了吧,我真心觉得这是一个不错的机会,所以希望大家年前能够冲一冲,为自己拿下一个不错的岗位。 所以今天,就来分享一点算法干货,因为像这种大场面试, 算法跑不掉的。 干货第1步: 知己知彼 俗话说,知己知彼才能百战不殆。 算法虽然重要,但是了解大厂HR面试时的心理活动同样重要。 面试为什么考算法? 无非是算法 最能说明一个人的综合实力。 而大厂考算法一般也会分两步,第一步:让你直接说思路;第二步:让你实操写代码。 通过这两步,就可以看出你的编程内功是否深厚,除此之外还能多维度考察你的其他能力,比如:逻辑思维清晰与否、debug 能力如何、编码习惯怎样、是否能写出可维护的代码等等...... 既然了解了HR的内心活动,那接下来努力的方向就有了。 干货第2步: 怎样快速学习 算法面试,可以靠刷题通过吗? 肯定能! 但是只靠刷题去提升算法能力,一是进度慢要耗费大量时间,二是别忘了面试时不仅要考逻辑,还会考实操

刷题2个月,工资25k,有它真香!

安稳与你 提交于 2020-11-22 09:46:25
我一直不知道我在大家心目中的定位是什么,但我内心其实是把自己定义为一个 『工具人』 的。 可能是因为我自己本身就是程序员, 所以更能理解程序员的不易吧。 所以,我尽量不写水文, 只分享干货。 就是希望大家看了能够有所收获,可以找到一份满意的工作,拿到一个不错的薪水,然后可以推荐推荐我。 好了言归正传, 抖音年底扩招的消息, 相信大家应该都听说了吧,我真心觉得这是一个不错的机会,所以希望大家年前能够冲一冲,为自己拿下一个不错的岗位。 所以今天,就来分享一点算法干货,因为像这种大场面试, 算法跑不掉的。 干货第1步: 知己知彼 俗话说,知己知彼才能百战不殆。 算法虽然重要,但是了解大厂HR面试时的心理活动同样重要。 面试为什么考算法? 无非是算法 最能说明一个人的综合实力。 而大厂考算法一般也会分两步,第一步:让你直接说思路;第二步:让你实操写代码。 通过这两步,就可以看出你的编程内功是否深厚,除此之外还能多维度考察你的其他能力,比如:逻辑思维清晰与否、debug 能力如何、编码习惯怎样、是否能写出可维护的代码等等...... 既然了解了HR的内心活动,那接下来努力的方向就有了。 干货第2步: 怎样快速学习 算法面试,可以靠刷题通过吗? 肯定能! 但是只靠刷题去提升算法能力,一是进度慢要耗费大量时间,二是别忘了面试时不仅要考逻辑,还会考实操,这时候刷题的弊端就出来了,