关于面试问题:现在的校招面试管你是不是应届生

作者:小傅哥 博客:https://bugstack.cn 积淀、分享、成长,让本人和别人都能有所播种!一、他,上来打我! 【字节】除了MQ解耦发奖,是否还有比MQ更优的解决方案?【字节】你当初是学习的我的项目,但如果部署上线,还有哪些地方须要改良?【字节】如果让你来评估我的项目的QPS的话,你会用什么形式来评估?(补充;不要做压测,就依据设计、硬件配置推导QPS)【字节】比如说:16核64G的机器,做秒杀零碎,你会批改和配置哪些货色?(不思考 Redis、Kafka等)【字节】接着下面,SpringBoot、JVM 配置参数还有哪些。你提到 JVM 堆大小,如果配置过大会有什么副作用。【字节】秒杀场景下用哪种垃圾回收器适合【字节】写代码时有没有什么形式,尽量减少FullGC【字节】实现短信验证码的生成和校验,只应用Java语言,不能应用Redis等存储工具【百度】说一下AbstractRoutingDataSource,它的外围办法?【百度】多数据源如何配置?【百度】对MyBatis的拦截器有理解吗?【京东】在这个纸上,画一下你方才说的策略模式、模板模式和工厂模式的代码实现构造【京东】你提到的DDD架构中,依赖倒置做了防腐(ACL)隔离。请具体阐明下【小红书】如果让你从零到一设计一个配置核心你怎么设计,还有es的底层是怎么实现的?更多... https://bugstack.cn/md/zsxq/material/interview.html这些问题曾经一一做了解答,并且还有星球搭档的探讨。这也是大家退出小傅哥星球【码农会锁】除了做实战我的项目以外的技术价值,因为你所有的技术成长问题,我都能够为你兜底。解答链接:https://t.zsxq.com/11PQTlMvA - 星球中还有各种各样的场景问题解决方案,都能够学习。 说实话,就这么面。没有个2~3年开发教训,基本扛不住。但就这么面,如果拿Offer了,薪资待遇也是贼高,起步即巅峰!薪资根本能达到普码工作3年-4年的待遇。 对于越来越多这样有难度的面试形式,我也想了想为啥? 其实最大的起因就是大厂掐尖,面这样的问题,是阐明真的有人能答复的进去。能回来的进去的,根本也是研究生或者很牛的本科生,在校期间就十分积极主动的做了这样简单的我的项目锤炼,还做了不少上线部署对外提供服务的事件。尽管答复的可能有些有余,但往往也能看出求职者的深度积攒到底有多少,深度越深,薪资越高! 大部分校招生也会直呼:"太TM卷了,学不完,基本学不完"。但对于喜爱编程的人会感觉挺爽,写代码还能赚钱,美滋滋。 其实说到根上,在对编程有那么一点喜爱且不是谋生伎俩的状况下。用大学4年或者加研究生2~3年,也就是4~7年工夫,齐全能够锤炼出一个十分优良的研发工程师。 差距是从每一天积攒拉开的!那如果你想把这差距放大点,哪怕先面个不是字节这类的大厂,走个中小厂的话,那就要多实战!!! 二、请,正确学习!说到实战,那怎么实战?让我来把 CRUD 在写一遍! 别了,节约那工夫,锤炼手速吗!有这个工夫不如好好的,认认真真的做一些有深度的我的项目。你基本不必图快,快只能让你学的更少。而慢下来,一点点钻研,一点点冲破。做完我的项目,在部署,压测,优化。这一过程下来,能力迎接面试官的发问,并给出你的了解和解答。 接下来,是一些十分重要的学习技巧。 1. 多犯错误强烈不倡议曾经度过了编程新手村的搭档,仍须要对照着视频,一行一行的跟着写代码。而且对照视频抄代码,其实比有思考的写代码,要累的多。这样的学代码,十分短少本人的思考,也会很少地遇到谬误。感觉挺良好,其实啥也没学到。 学习编程时,一个编程谬误。其实就可能让你检索出一堆的犯这个错的各种状况,你须要一个个验证。你到的谬误到底是怎么导致的。好啦,反反复复的折腾。最初,你排汇了一堆的编程教训和调试技巧。这就是多犯错的重要性。 2. 实际后行编程不须要过早的看特地的多的实践材料,因为所有的实践也都是来自于实际后的提炼总结。但提炼的总结往往会有些形象,同时又伴有各种的名词定义。这就像买了台自行车,买回来拆了钻研,还是先骑着走走。 而学习编程最好的形式是能先看到后果,把一个个大我的项目的所波及的小知识点,碎片化的验证运行输入后果。有了后果,在剖析细节,无论是加日志、打断点、补性能,也都变得顺利了起来。当这些实际都验证的短缺了,在去看实践就会豁然开朗,原来他说的这个是意思啊!八戒! 3. 后果导向短少指标感是不少搭档学习编程时遇到的问题,每当面对一项须要学习的内容时,也会短少启动方向。对于这样的状况,往往我的做法是指标驱动,后果导向。先明确我要做的货色的最终后果,以最终后果来驱动我的学习门路。 在这个过程,不须要当时就把所有条件都筹备好。比方我学习一个我的项目,但我的项目里A不会、B不懂、C不行。没关系,先动起来。哪怕是开始一点点,也比始终站着想不动强。只有开始了,剩下的就是遇山开山⛰罢了! 4. 放大问题每次遇到什么编程不会的状况,先尝试把问题放大。别一下把问题搞的很大,尤其是别写了一堆的代码的才测试。 当你学会把问题放大,缩最容易解决的范畴后,其实大问题也就变成了小问题。这也就编程中第一条编程准则,康威定律提到的。问题越小越容易了解和被解决。就像我的博客 bugstack.cn 3年来,有几百万字的文字输入,但对于我来说,其实只是每天都积攒一点,有时候可能就是几十字。而这些也都是碎片化的工夫来一个个解决我要表白的内容。 5. 进步认知其实编码能力也是思维能力,思维的强弱有认知决定。而这份编程认知,一方面是来自于本人的多种实际,解决过不同场景的各类技术问题,同时具备创造性的设计了优良的计划,从而积攒的能力。这也就是我后面提到的,你要多犯错,你不犯错,你就没机会发明。而另外一方面的进步认知,是做很多优良的我的项目,这就跟去大厂工作一样,要不就不是外面的我的项目教训和大牛的技巧吗?! 第二呢,是来自于对优良框架源码和我的项目的学习。在这里我想说,MyBatis 源码,真是贼能够学习一下。一个框架,以会话模型为入口,进入后。使用数十种设计模式,拆分数据源、连接池、执行器、解析器等,兼职是学习的宝藏类代码。在者这些货色都锤炼了,之后呢,要进行实际,要做我的项目,要把各种所学和我的项目联合起来锤炼。通过这样的形式,进步编程认知,锤炼编程能力。 6. 拷贝优良学习倡议、职业指导、技术分享、述职问难,每一项来自大牛的分享,都是十分有意义的信息积攒,你能够针对性的借鉴和参考。尤其是能顺利的走到这个阶段的大牛,每一个都有很强的一面,否则这风风雨雨这些年中,早被职场淘汰了。 此外还有那些优良大学的毕业生和海内待业/工作搭档的学习办法,真的能够宽阔出你很多的学习思路。而这些货色,不会有书、也不会有笔记、也不会有博客。因为比拟琐碎,有时候就是一句一句零散的话,但却可能能够扭转你命运的齿轮。 7. 放弃激情如果你对编程有好奇感,做出货色有兴奋劲,那么肯定放弃上来。长期保持,你会扫出来很多编程路上的宝藏,让你兴奋的睡不着。当你有激情的学习编程后,会发现这货色太有意思了,兼职像一个额定的世界。而是你这个世界里小小的建造者,用着一个新的语言在构建新的世界。 8. 长期学习入了编程这一行,根本就是要能长期学习了。没有那个技术的语言或者工作工具能长期应用的,都可能被代替,也都每年有新的货色进去。如果你想靠着混职场,不进步本人的技术,那35拿到砍,真的可能会对你下手!而长期学习,也能让你有底气,随时能走的进来,想留也能留的下来。别听有些maimai上的扯淡,只会技术不行啥的。要是不会技术,才不行,不够深刻,才不行。技术永远是编程人员的立身之本。 9. 常识闭环可能一开始你只是个小小的Java小程序,但随时工作年限的减少,你会逐渐的学习到其余各个技术技能,甚至还会包含前端语言以及运维能力。再往后,还可能会夸1~3个编程语言来实现你的开发诉求。而我,也是这样一路经验过去的10年编程。 在工作到3~5年的时候,时而就在想,本人是否具备一个残缺的技术栈体系,如果脱离公司的框架,我是否能构建出我的利用。从那个时候开始,一直的积攒本人对各项技术栈的使用,用市面的技术栈代替各项公司里用过的技术栈,把他们的利用学会,把他们的原理搞透。一点点的,也就把各项技术栈体系买通了,最初也就走到了架构师的岗位。 10. 气氛圈子讲道理,要不买点书看、要不退出些技术圈子,用不了多少钱,真的用不了多少钱。给本人点技术投资,多开开事业,多一些技术见闻。别太让本人的技术成长灵通,做做本人以前可能没做过的抉择,兴许你命运的齿轮就开始转动了! 以下这个技术圈子强烈建议退出,因为你能够学习到来自10年编程教训的架构师所编写的各项浅浅深深不同梯度难度的我的项目,也能够见闻到几千人的技术交换和常识积攒,还能够学习到国内高校、海内留学搭档的学习形式办法。这远比你看过一本书、听过一句话,都切实的多!https://bugstack.cn/md/zsxq/introduce.html 祝大家早日封神! ① 写够03万行代码 = 先天武者/炼体:炼肉筋骨② 写够05万行代码 = 先天武者/明劲:破空炸响③ 写够10万行代码 = 武师/暗劲:产生元气④ 写够20万行代码 = 巨匠/化劲:全身布气⑤ 写够30万行代码 = 宗师/丹劲:气集一点⑥ 写够50万行代码 = 武圣/罡劲:透气成罡⑧ 写够100万行代码 = 武神/破虚:罡气破空⑨ 写够500万行代码 = 海洋神仙/见神:内视身材⑩ 写够1000万行代码 = 星河大帝/成神:通晓将来

September 5, 2023 · 1 min · jiezi

关于面试问题:面试题JVM005-双亲委派模型及其缺陷以及SPI和Tomcat的类加载

https://blog.csdn.net/jjclove...https://blog.csdn.net/u013568...https://zhuanlan.zhihu.com/p/...什么是双亲委派模型?双亲委派模型劣势?-1. 使得 Java 类随着它的类加载器一起具备一种带有优先级的档次关系,从而使得根底类失去对立-2. 防止了多份同样字节码的加载双亲委派模型缺点?举例说明->SPI->怎么破?->应用线程上下文类加载器(ContextClassLoader)加载tomcat的类加载机制? 这样就存在一个问题:SPI 的接口是 Java 外围库的一部分,是由BootstrapClassLoader加载的;SPI实现的Java类个别是由AppClassLoader来加载的。BootstrapClassLoader是无奈找到SPI的实现类的,因为它只加载Java的外围库。它也不能代理给AppClassLoader,因为它是最顶层的类加载器。也就是说,双亲委派模型并不能解决这个问题

February 1, 2023 · 1 min · jiezi

关于面试问题:面试题JVM004-StringStringBuilderStringBuffer-有什么不同

String、StringBuffer、StringBuilder的区别: 口径StringStringBufferStringBuilder执行速度最差其次最高线程平安平安平安不平安应用场景大量字符串操作并发+大量单线程+大量操作

February 1, 2023 · 1 min · jiezi

关于面试问题:面试题JVM003-Java对象的访问定位

对象的拜访定位支流的拜访形式次要有句柄和间接指针两种从虚拟机栈上拜访堆上的对象数据 1. 通过句柄拜访对象如果应用句柄拜访,Java堆会划分出一块内存作句柄池;reference中存储的就是对象的句柄地址;而句柄中蕴含了对象实例数据与类型数据各自的具体地址信息: 优缺点:毛病: 句柄形式,应用代理,拜访速度慢一点;长处: 不必频繁批改指针(gc回收对象,实例对象挪动很失常); 2. 通过间接指针拜访对象栈中援用数据, 间接保留着堆内存中实例对象的地址(HotSpot所应用的)java堆对象须思考如何搁置拜访类型数据信息,而reference中存储的间接就是堆内存的对象地址;优缺点:长处: 速度快, 对象的拜访很频繁,间接定位缩小了一次指针定位的开销(定位句柄),从而千里之行;始于足下,在晋升拜访性能上做出的成果也是极其能够的毛病: 堆内存中对象内存地址变动后, 须要频繁批改指针

February 1, 2023 · 1 min · jiezi

关于面试问题:面试题JVM002-Java对象的创建过程

1. 类的生命周期加载->连贯->初始化->应用->卸载 连贯=验证+筹备+解析2. 初始化和实例化初始化动态变量、动态代码块、变量、一般办法、构造方法 1). 父类-动态变量 2). 父类-动态初始块 3). 子类-动态变量 4). 子类-动态块 5). 父类-一般变量 6). 父类-初始块 7). 父类-构造方法 8). 子类-一般变量 9). 子类-一般初始块 10).子类-构造方法Java继承构造中类的初始化实例化 1).应用new关键字 → 调用了构造函数 2).应用Class类的newInstance办法 → 调用了构造函数 3).应用Constructor类的newInstance办法 → 调用了构造函数 4).应用clone办法 → 没有调用构造函数 5).应用反序列化 → 没有调用构造函数 6).应用Unsafe → unsafe.allocateInstance(Test.class)

January 31, 2023 · 1 min · jiezi

关于面试问题:面试题集JVM1介绍Java内存区域

介绍Java内存区域1. 程序计数器:记录下1条须要执行的字节码指令: 分支、循环、跳转、异样解决、线程复原等性能都须要依赖程序计数器;线程公有;次要有两个作用: 字节码解释器通过改变程序计数器来顺次读取指令,从而实现代码的流程管制,如:程序、抉择、循环、异样解决。在多线程下,记录以后线程执行地位,从而当线程被切换回来的时候可能晓得该线程上次运行到哪了。惟一不会呈现 OutOfMemoryError (内存透露) 的内存区域!2. Java虚拟机栈:线程公有形容的是 Java 办法执行的内存模型,每次⽅法调用都通过栈传递数据Java 内存能够毛糙的辨别为堆内存(Heap)和栈内存 (Stack),其中栈就是当初说的虚拟机栈,或者说是虚拟机栈中局部变量表局部。 (实际上,Java 虚拟机栈是由一个个栈帧组成,而每个栈帧中都领有:局部变量表、操作数栈、动静链接、办法进口信息。)局部变量表次要寄存了编译期可知的各种数据类型(boolean、byte、char、short、int、float、long、double)、对象援用(reference 类型,它不同于对象自身,可能是一个指向对象起始地址的援用指针,也可能是指向一个代表对象的句柄或其余与此对象相干的地位)。 Java 虚拟机栈会呈现两种谬误: StackOverFlowError 和 OutOfMemoryError 。 StackOverFlowError: 若Java 虚拟机栈的大小不容许动静扩大,当线程申请栈的深度超过以后Java 虚拟机栈的最大深度,就抛出 StackOverFlowError。OutOfMemoryError:若Java虚拟机堆中没有闲暇内存,并且垃圾回收器也无奈提供更多内存的话。就会抛出 OutOfMemoryError。Java 办法有两种返回形式,不论哪种返回形式都会导致栈帧被弹出:return 语句。抛出异样。3. 本地办法栈虚拟机栈为虚拟机执行 Java 办法 (也就是字节码)服务,而本地办法栈则为虚拟机应用到的 Native 办法服务。 在 HotSpot 虚拟机中和 Java 虚拟机栈合二为一本地办法被执行的时候,在本地办法栈也会创立一个栈帧,用于寄存该本地办法的局部变量表、操作数栈、动静链接、进口信息。 办法执行结束后相应的栈帧也会出栈并开释内存空间,也会呈现StackOverFlowError 和 OutOfMemoryError 两种谬误4. 堆JVM治理的内存中最大的一块,Java堆是所有线程共享的一块内存区域,在虚拟机启动时创立. 寄存对象实例,简直所有的对象实例以及数组都在这里分配内存。从jdk1.7开始曾经默认开启逃逸剖析,如果某些办法中的对象援用没有被返回或者未被里面应用(也就是未逃逸进来),那么对象能够间接在栈上分配内存。Java堆是GC治理的次要区域,因而也被称作GC 堆(Garbage Collected Heap).从垃圾回收的角度,因为当初收集器根本都采纳分代垃圾收集算法,所以 Java 堆还能够细分为:新生代和老年代:再粗疏一点有:Eden 空间、From Survivor、To Survivor 空间等。新生代: Eden 区、两个 Survivor 区都属于新生代->依照程序被命名为 s1 和 s2老年代: 大部分状况,对象都会首先在 Eden 区域调配,在一次新生代GC后,如果对象还存活,则会进入 s1 或者 s2,并且年龄加 1(Eden 区->Survivor 区后对象的初始年龄变为 1),当它的年龄减少到肯定水平(默认为15岁),就会被降职到老年代中。对象降职到老年代的年龄阈值,能够通过参数 -XX:MaxTenuringThreshold 来设置。几个谬误:OutOfMemoryError: GC Overhead Limit Exceeded: ...

January 31, 2023 · 1 min · jiezi

关于面试问题:微软M365-data团队面试复盘

整体流程先交待一下背景,我面试的职位是M365 data的SDE2,面试之前先有hr分割并且电话用英语沟通了一下,次要是看英语口语表达能力,但实际上最初面试的时候,全程中文。面试用的teams,进入meeting之后,面试官先介绍了一下本人和团队的业务状况,之后是惯例的自我介绍环节,以及问我的项目细节,和一些十分根底的技术问题(比方面向对象的多态是什么……我齐全忘了)。之后问了3道easy题目: 反转链表。只问理解法,没让写,只刷了一遍这个题加上原地批改有点绕,没答上来,答成了复制链表,应该是寄了;findStr(String source, String pattern, boolean ignoreCase)函数实现。手写代码,忘了ascii表,面试官揭示了4、5次哪里写错了,预计是寄了;手写一个链表实现。用java定义外部类太麻烦了,用go实现了。实现的过程中面试官看我代码问了对象调配到栈还是堆的问题,答:逃逸剖析。是对的但没说太分明。面试感触只能说大厂不论能不能过,至多面试官给人的感觉有技术sense,会从我的项目切人技术,不会拿着八股始终问(点名批评客路旅行,tm拿着八股pdf文档问了我20多道)。 复盘还是有一些对本人的毛病的认知上的播种: 技术上没啥好复盘的,问的都比较简单,然而不能一次bug free通过,阐明本人也存在根底不牢的问题;逃逸剖析说对了,然而说的时候不够自信,问题也是一方面本人对这个货色没怎么看,另一方面心态不好,很容易怂,目前临时的解决办法是再本人详细描述一遍这个实践,不论对不对,先说了,比怂了给人的感触好一点;膂力跟不上面试流程,写了3道算法题,人就晕了,一整个昏头昏脑。说的货色还是不够引起面试官的趣味,应该尽量往面试官的team的业务畛域靠,这次没做好,只说了本人做了的事件,没有往spark、flink之类的面试官team的货色说(明明筹备了然而临场就是没明确要说!kuso!)。

October 24, 2022 · 1 min · jiezi

关于面试问题:前端模拟面试给你真实的求职体验和面试经验网盘分享内置文档资料

download:前端模仿面试:给你实在的求职体验和面试教训网盘分享内置文档资料Java线程池Executor详解咱们最常使用的Executors实现创建线程池使用线程次要是用上述类图中提供的类。在上边的类图中,蕴含了一个Executor框架,它是一个根据一组执行策略的调用调度执行和管制异步工作的框架,目标是提供一种将工作提交与工作如何运行别来到的机制。它蕴含了三个executor接口: Executor:运行新工作的简略接口ExecutorService:扩大了Executor,增加了用来治理执行器生命周期和工作生命周期的方法ScheduleExcutorService:扩大了ExecutorService,反对Future和定期执行工作 线程池的好处 升高资源消耗-重用存在的线程,缩小对象创建、沦亡的开销,性能好提高响应速度 -可无效管制最大并发线程数,提高系统资源应用率,同时可能避免过多资源竞争,避免阻塞。当工作到达时,工作可不必等待线程创建就能立即执行提高线程的可管理性-提供定时执行、定期执行、单线程、并发数管制等功能。 new Thread的弊病 每次new Thread 新建对象,性能差线程不足对立治理,可能无限度的新建线程,相互竞争,可能占用过多的系统资源导致死机或者OOM(out of memory 内存溢出),这种问题的原因不是因为单纯的new一个Thread,而是可能因为程序的bug或者设计上的缺点导致不断new Thread造成的。缺少更多功能,如更多执行、定期执行、线程中断。 线程池核心类-ThreadPoolExecutor参数说明:ThreadPoolExecutor一共有七个参数,这七个参数配合起来,形成了线程池弱小的功能。 corePoolSize:核心线程数量maximumPoolSize:线程最大线程数workQueue:阻塞队列,存储等待执行的工作,很重要,会对线程池运行过程产生重大影响 当咱们提交一个新的工作到线程池,线程池会根据以后池中正在运行的线程数量来决定该工作的处理形式。处理形式有三种:1、间接切换(SynchronusQueue)2、无界队列(LinkedBlockingQueue)能够创建的最大线程数为corePoolSize,这时maximumPoolSize就不会起作用了。当线程池中所有的核心线程都是运行状态的时候,新的工作提交就会放入等待队列中。3、有界队列(ArrayBlockingQueue)最大maximumPoolSize,能够升高资源消耗,然而这种形式使得线程池对线程调度变的更艰巨。因为线程池与队列容量都是无限的。所以想让线程池的吞吐率和处理工作达到一个正当的范畴,又想使咱们的线程调度绝对简略,并且还尽可能升高资源的消耗,咱们就需要正当的限度这两个数量调配技巧: [如果想升高资源的消耗包含升高cpu使用率、操作系统资源的消耗、上下文切换的开销等等,可能设置一个较大的队列容量和较小的线程池容量,这样会升高线程池的吞吐量。如果咱们提交的工作常常发生阻塞,咱们可能调整maximumPoolSize。如果咱们的队列容量较小,咱们需要把线程池大小设置的大一些,这样cpu的使用率相对来说会高一些。然而如果线程池的容量设置的过大,提高工作的数量过多的时候,并发量会减少,那么线程之间的调度就是一个需要考虑的问题。这样反而可能会升高处理工作的吞吐量。] keepAliveTime:线程没有工作执行时最多保持多久工夫终止(当线程中的线程数量大于corePoolSize的时候,如果这时没有新的工作提交核心线程外的线程不会立即销毁,而是等待,直到超过keepAliveTime)unit:keepAliveTime的工夫单位threadFactory:线程工厂,用来创建线程,有一个默认的工场来创建线程,这样新创建进去的线程有雷同的优先级,是非守护线程、设置好了名称)rejectHandler:当拒绝处理工作时(阻塞队列满)的策略(AbortPolicy默认策略间接抛出异样、CallerRunsPolicy用调用者所在的线程执行工作、DiscardOldestPolicy抛弃队列中最靠前的工作并执行当前任务、DiscardPolicy间接抛弃当前任务)corePoolSize、maximumPoolSize、workQueue 三者关系:如果运行的线程数小于corePoolSize的时候,间接创建新线程来处理工作。即使线程池中的其余线程是空闲的。如果运行中的线程数大于corePoolSize且小于maximumPoolSize时,那么只有当workQueue满的时候才创建新的线程去处理工作。如果corePoolSize与maximumPoolSize是雷同的,那么创建的线程池大小是固定的。这时有新工作提交,当workQueue未满时,就把请求放入workQueue中。等待空线程从workQueue取出工作。如果workQueue此时也满了,那么就使用另外的拒绝策略参数去执行拒绝策略。

August 4, 2022 · 1 min · jiezi

关于面试问题:24道网络工程师常见面试题看看有没有你不会的

1、交换机是如何转发数据包的?交换机通过学习数据帧中的源MAC地址生成交换机的MAC地址表,交换机查看数据帧的指标MAC地址,依据MAC地址表转发数据,如果交换机在表中没有找到匹配项,则向除承受到这个数据帧的端口以外的所有端口播送这个数据帧。 2、简述STP的作用及工作原理。作用: 可能在逻辑上阻断环路,生成树形构造的拓扑;可能一直的检测网络的变动,当次要的线路呈现故障断开的时候,STP还能通过计算激活阻起到断的端口,起到链路的备份作用。工作原理: STP将一个环形网络生成无环拓朴的步骤: 抉择根网桥(Root Bridge)抉择根端口(Root Ports)抉择指定端口(Designated Ports)生成树机理: 每个STP实例中有一个根网桥每个非根网桥上都有一个根端口每个网段有一个指定端口非指定端口被阻塞 STP是替换网络的重点,考查是否了解。3、简述传统的多层替换与基于CEF的多层替换的区别。简略的说,传统的多层替换:一次路由,屡次替换。 基于CEF的多层替换:毋庸路由,始终替换。 4、DHCP的作用是什么,如何让一个vlan中的DHCP服务器为整个企业网络调配IP地址?作用:动静主机配置协定,为客户端动态分配IP地址。配置DHCP中继,也就是帮忙地址。(因为DHCP是基于播送的,vlan 或路由器隔离了播送) 5、有一台交换机上的所有用户都获取不了IP地址,但手工配置后这台交换机上的同一vlan间的用户之间可能互相ping通,但ping不通外网,请说出排障思路。如果其它交换机上的终端设备可能获取IP地址,看帮忙地址是否配置正确;此交换机与上连交换机间是否封装为Trunk。单臂路由实现vlan间路由的话看子接口是否配置正确,三层交换机实现vlan间路由的话看是否给vlan配置ip地址及配置是否正确。再看此交换机跟上连交换机之间的级连线是否有问题;排障思路。6、什么是动态路由?什么是动静路由?各自的特点是什么?动态路由是由管理员在路由器中手动配置的固定路由,路由明确地指定了包达到目的地必须通过的门路,除非网络管理员干涉,否则动态路由不会发生变化。动态路由不能对网络的扭转作出反应,所以个别说动态路由用于网络规模不大、拓扑构造绝对固定的网络。 动态路由特点: 它容许对路由的行为进行准确的管制;缩小了网络流量;是单向的;配置简略。动静路由是网络中的路由器之间互相通信,传递路由信息,利用收到的路由信息更新路由表的过程。是基于某种路由协定来实现的。常见的路由协定类型有:间隔矢量路由协定(如RIP)和链路状态路由协定(如 OSPF)。路由协定定义了路由器在与其它路由器通信时的一些规定。动静路由协定个别都有路由算法。其路由抉择算法的必要步骤: 1.向其它路由器传递路由信息;2.接管其它路由器的路由信息;3.依据收到的路由信息计算出到每个目标网络的最优门路,并由此生成路由抉择表;4.依据网络拓扑的变动及时的做出反馈,调整路由生成新的路由抉择表,同时把拓扑变动以路由信息的模式向其它路由器宣告。动静路由实用于网络规模大、拓扑简单的网络。 动静路由特点: 无需管理员手工保护,加重了管理员的工作累赘。占用了网络带宽。在路由器上运行路由协定,使路由器能够主动依据网络拓朴构造的变动调整路由条目;是否依据具体的环境抉择适合的路由协定。 7、简述有类与无类路由抉择协定的区别。有类路由协定:路由更新信息中不含有子网信息的协定,如RIPV1,IGRP。无类路由协定:路由更新信息中含有子网信息的协定,如OSPF,RIPV2,IS-IS,EIGRP 是否了解有类与无类。8、简述RIP的防环机制。定义最大跳数 Maximum Hop Count (15跳)程度宰割 Split Horizon (默认所有接口开启,除了Frame-Relay的物理接口,可用sh ip interface 查看开启还是敞开)毒化路由 Poizoned Route毒性反转 Poison Reverse (RIP基于UDP,UDP和IP都不牢靠,不晓得对方收到毒化路由没有;相似于对毒化路由的Ack机制)放弃计时器 hold-down Timer (避免路由表频繁翻动)闪式更新 Flash Update触发更新 Triggered Update (需手工启动,且两边都要开 Router (config-if)# ip rip triggered )当启用触发更新后,RIP不再遵循30s的周期性更新工夫,这也是与闪式更新的区别所在。 RIP的4个计时器: 更新计时器(update):30 s有效计时器(invalid):180 s (180s没收到更新,则置为possible down状态)放弃计时器(holddown): 180s (真正起作用的只有60s)刷新计时器(flush): 240s (240s没收到更新,则删除这条路由)如果路由变成possible down后,这条路由跳数将变成16跳,标记为不可达;这时holddown计时器开始计时。 在holddown工夫内即便收到更优的路由,不退出路由表;这样做是为了避免路由频繁翻动。 什么时候启用holddown计时器:“当收到一条路由更新的跳数大于路由表中已记录的该条路由的跳数” 9、简述电路替换和分组替换的区别及利用场合. 电路替换连贯。依据须要进行连贯,每一次通信会话期间都要建设、放弃,而后拆除在电信运营商网络中建设起来的专用物理电路 分组替换连贯,将传输的数据分组,多个网络设备共享理论的物理线路,应用虚电路/虚通道(Virtual Channel)传输 ...

July 22, 2022 · 1 min · jiezi

关于面试问题:面试直播回放大厂专家VS职场萌新上篇

上周面试直播的知识点太多,导致我花了我很长的工夫来进行整顿。因为内容较多,因而会分为高低两篇内容来进行。 上篇:面试官的角度整顿出面试题目以及面试录音(面试录音在最初哦)下篇:候选人角度,学习技巧以及学习材料。背景介绍嘉宾面试官:建哥,阿里/美团/滴滴工作背景,目前在某一线大厂专家岗位,资深面试官候选人:小赖,互联网萌新,1.5年工作教训,自律性很强,均匀每天学习工夫在3个小时。面试流程&外围题目一、自我介绍1、本人的履历2、工作中你认为最善于什么3、工作中遇到的最大挑战是什么?二、基础知识考查Java线程池在理论工作中什么场景下应用过?线程池的运作原理是什么?包含哪些外围参数?应用过程中是如何抉择设置外围线程数和最大线程数的?比方cpu密集型和io密集型场景?hashMap的数据结构是什么样子的?如何寄存一个key和value的?如何扩容的?volatile的作用?什么场景下会应用?是否保障原子性?原理是什么如何保障变量可见性的?什么是可重入锁?synchronized是否是可重入锁?怎么实现可重入锁的?Redis的线程模型?Redis的长久化形式RDB和AOF的区别?Redis的缓存淘汰策略LRU的原理是否理解?Redis分布式锁和zk的分布式锁区别?Redis如果失败了只能依附过期工夫革除key,zk是否能够防止该问题?springcloud的 eureka作为注册核心多个节点注册机器列表是如何做同步的?client申请server获取机器列表是如何获取的?是从eureka实时获取还是从本地获取?Hystrix限流降级(信号量和线程池区别?)Hystrix应用线程池模式。申请比拟多的状况下线程池能够最大限度利用资源异步执行,害处是线程切换资源开销。音讯队列应用过哪些中间件?什么场景下会应用?对kafka钻研过原理,如何反对百万并发的?设计模式在工作中应用过哪些?比方策略模式、单例模式?解决了理论什么问题?附加题:MySQL主从同步原理?如何最大限度防止主从提早?零碎交互是如何保证数据一致性的?三、架构设计扩大考查我看你对高并发、高可用、高性能三高零碎有肯定理解,限流是解决三高的一个伎俩。你负责的一个系统核心接口qps是100,那么有很多三方服务都调用这个接口,其中一个外围接口十分重要,它的qps只有10,你该如何设计一个限流机制既要满足你的服务不被打垮,同时也要满足三方的外围重要接口不被降级限流? 四、我的项目介绍简略介绍一下你负责我的项目”助力平台“是做什么的?给什么角色的人应用的?解决了理论什么问题?有什么应用价值?是否能够疾速画出零碎架构图?能够简略说下?助力平台接入设施量从9万增长到60万的?你基于此做了什么?设施量递增的反对难点是什么?如果当初须要增长到100万,当初的架构有没有思考过如何反对? 五、综合倡议简历层面:整体简历构造档次十分清晰,还是比拟赞的,包含集体负责的职责、技术挑战和基于技术挑战如何解决的,最终的达到的成果,能够直观的呈现出你在我的项目落地中的奉献和职责。倡议不要呈现太多具体化的技术栈,尤其是专业技能局部,写太多了太细了面试官很容易去深挖太细,除非你齐全hold住,而且写得越多面试官对你第一印象貌似你只会这些,太看透你了,要朦胧一些比拟好。基础知识层面: 整体答复过程中的语速是否过快?声音是否清晰?依据面试答复状况进行点评?面试录音直播回放 End心愿大家都能顺利的拿到称心的offer也辛苦。大家也能够关注咱们的公众号。你能取得什么? 不定期招聘岗位更新,大厂+小厂(不限度学历)大厂资深面试官和HR聊面试,如果感觉咱们的品质还不错,也能够分割小编取得一对一的面试领导哦,只须要关注公众号就能够。Offer+私人定制从简历领导,模仿面试,到大厂内推,搞定offer,一步到位。由大厂面试官针对每个人不同的状况给与个性化的领导。领导内容蕴含但不限于 简历批改针对不同人不同的工作场景给与不同的修改意见模仿面试实在大厂面试场景(2次),面试后针对性的领导岗位内推适合的岗位内推,海量内推资源继续更新,简历中转用人部门岗位筛选拿到offer后,基于求职者集体倒退给出正当的offer筛选倡议分割咱们公众号:IT职场指南集体微信:Becool0322

April 7, 2022 · 1 min · jiezi

关于面试问题:史上最全Java多线程面试题附答案

我把所有Java相干的面试题和答案都整顿成了PDF,并且带书签目录,浏览起来十分不便 面试题及答案PDF下载:https://www.hicxy.com/2645.html 面试题及答案PDF下载:https://www.hicxy.com/2645.html 面试题及答案PDF下载:https://www.hicxy.com/2645.html 1. 多线程和单线程的区别和分割?1、 在单核 CPU 中,将 CPU 分为很小的工夫片,在每一时刻只能有一个线程在执行,是一种宏观上轮流占用 CPU 的机制。 2、 多线程会存在线程上下文切换,会导致程序执行速度变慢,即采纳一个领有两个线程的过程执行所须要的工夫比一个线程的过程执行两次所须要的工夫要多一些。 论断:即采纳多线程不会进步程序的执行速度,反而会升高速度,然而对于用户来说,能够缩小用户的响应工夫。 2. 什么是多线程中的上下文切换?多线程会独特应用一组计算机上的CPU,而线程数大于给程序调配的CPU数量时,为了让各个线程都有执行的机会,就须要轮转应用CPU。不同的线程切换应用CPU产生的切换数据等就是上下文切换。 3. join办法的作用?Thread类中的join办法的次要作用就是同步,它能够使得线程之间的并行执行变为串行执行。当咱们调用某个线程的这个办法时,这个办法会挂起调用线程,直到被调用线程完结执行,调用线程才会继续执行。 4. 创立线程池参数有哪些,作用?public ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)1.corePoolSize:外围线程池大小,当提交一个工作时,线程池会创立一个线程来执行工作,即便其余闲暇的外围线程可能执行新工作也会创立,期待须要执行的工作数大于线程外围大小就不会持续创立。 2.maximumPoolSize:线程池最大数,容许创立的最大线程数,如果队列满了,并且曾经创立的线程数小于最大线程数,则会创立新的线程执行工作。如果是无界队列,这个参数根本没用。 3.keepAliveTime: 线程放弃流动工夫,线程池工作线程闲暇后,放弃存活的工夫,所以如果工作很多,并且每个工作执行工夫较短,能够调大工夫,进步线程利用率。 4.unit: 线程放弃流动工夫单位,天(DAYS)、小时(HOURS)、分钟(MINUTES、毫秒MILLISECONDS)、微秒(MICROSECONDS)、纳秒(NANOSECONDS) 5.workQueue: 工作队列,保留期待执行的工作的阻塞队列。 一般来说能够抉择如下阻塞队列: ArrayBlockingQueue:基于数组的有界阻塞队列。 LinkedBlockingQueue:基于链表的阻塞队列。 SynchronizedQueue:一个不存储元素的阻塞队列。 PriorityBlockingQueue:一个具备优先级的阻塞队列。 6.threadFactory:设置创立线程的工厂,能够通过线程工厂给每个创立进去的线程设置更有意义的名字。 7.handler: 饱和策略也叫回绝策略。当队列和线程池都满了,即达到饱和状态。所以须要采取策略来解决新的工作。默认策略是AbortPolicy。 AbortPolicy:间接抛出异样。CallerRunsPolicy: 调用者所在的线程来运行工作。DiscardOldestPolicy:抛弃队列里最近的一个工作,并执行当前任务。DiscardPolicy:不解决,间接丢掉。当然能够依据本人的利用场景,实现RejectedExecutionHandler接口自定义策略。5. 举例说明同步和异步。如果零碎中存在临界资源(资源数量少于竞争资源的线程数量的资源),例如正在写的数据当前可能被另一个线程读到,或者正在读的数据可能曾经被另一个线程写过了,那么这些数据就必须进行同步存取(数据库操作中的排他锁就是最好的例子)。当应用程序在对象上调用了一个须要破费很长时间来执行的办法,并且不心愿让程序期待办法的返回时,就应该应用异步编程,在很多状况下采纳异步路径往往更有效率。事实上,所谓的同步就是指阻塞式操作,而异步就是非阻塞式操作。 前面的问题,大家能够先本人独立思考一下。 另外我把所有Java相干的面试题和答案都整理出来了,给大家参考一下 面试题及答案PDF下载:https://www.hicxy.com/2645.html 面试题及答案PDF下载:https://www.hicxy.com/2645.html 面试题及答案PDF下载:https://www.hicxy.com/2645.html 6. 如何创立线程池7. 为什么wait()办法和notify()/notifyAll()办法要在同步块中被调用8. 为什么wait和notify办法要在同步块中调用?9. join办法实现原理10. notify()和notifyAll()有什么区别?11. 为什么wait, notify 和 notifyAll这些办法不在thread类外面?12. # 2、同步静态方法13. 当一个线程进入某个对象的一个synchronized的实例办法后,其它线程是否可进入此对象的其它办法?14. 你对线程优先级的了解是什么?15. 敞开线程池16. 线程同步和互斥有几种实现办法,都是什么?17. 什么是Daemon线程?它有什么意义?18. synchronized锁的是什么?19. 在Java中CycliBarriar和CountdownLatch有什么区别?20. wait 和 sleep 办法的不同?21. 为什么Thread类的sleep()和yield ()办法是动态的?22. Java中用到的线程调度算法是什么?23. 当初有 T1、T2、T3 三个线程,你怎么保障 T2 在 T1 执行完后执行,T3 在 T2 执行完后执 行?24. 在Java中Executor、ExecutorService、Executors的区别?25. 乐观锁和乐观锁的了解及如何实现,有哪些实现形式?26. 如何进行一个正在运行的线程27. ThreadLocal是什么28. 什么是Java内存模型29. 什么是不可变对象,它对写并发利用有什么帮忙?30. 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?31. ConcurrentHashMap的并发度是什么32. 说说本人是怎么应用 synchronized 关键字,在我的项目中用到了吗synchronized关键字最次要的三种应用形式:33. Java中Semaphore是什么?34. 如何在两个线程间共享数据?35. 什么是ThreadLocal变量?36. 怎么检测一个线程是否领有锁?37. 你如何在Java中获取线程堆栈?38. 如何正当的设置线程池39. Synchronized 有几种用法?40. sleep办法和wait办法有什么区别41. 什么是线程池?为什么要应用它?42. 一个线程运行时产生异样会怎么?43. 如何管制某个办法容许并发拜访线程的大小?44. 用户线程和守护线程有什么区别?45. 线程中断是否能间接调用stop,为什么?46. Runnable接口和Callable接口的区别47. ThreadLocal有什么用48. Java中堆和栈有什么不同?49. Java中如何获取到线程dump文件50. 什么是线程调度器(Thread Scheduler)和工夫分片(Time Slicing)?51. 不应用stop进行线程?52. SynchronizedMap和ConcurrentHashMap有什么区别?53. 高并发、工作执行工夫短的业务怎么应用线程池?并发不高、工作执行工夫长的业务怎么应用线程池?并发高、业务执行工夫长的业务怎么应用线程池?54. 你如何确保main()办法所在的线程是Java 程序最初完结的线程?55. 同步办法和同步块,哪个是更好的抉择?56. 线程池作用57. CopyOnWriteArrayList能够用于什么利用场景?58. 如何创立守护线程?以及在什么场合来应用它?59. 如何在两个线程之间共享数据60. synchronized和ReentrantLock的区别61. Thread.sleep(0)的作用是什么62. 线程的sleep()办法和yield()办法有什么区别?63. 什么是阻塞队列?阻塞队列的实现原理是什么?如何应用阻塞队列来实现生产者-消费者模型?64. 在java中守护线程和本地线程区别?65. 什么是Executors框架?66. 什么是Java Timer 类?如何创立一个有特定工夫距离的工作?67. 如何让正在运行的线程暂停一段时间?68. 什么是自旋69. Java中你怎么唤醒一个阻塞的线程?70. Java中的死锁71. start()办法和run()办法的区别72. join与start调用程序问题73. Java Concurrency API中的Lock接口(Lock interface)是什么?比照同步它有什么劣势?74. 什么是线程池? 为什么要应用它?75. 线程的创立形式76. 说一说本人对于 synchronized 关键字的理解77. 为什么应用Executor框架?78. 线程的状态79. 简述线程、程序、过程的基本概念。以及他们之间关系是什么?80. # 5、同步对象实例81. # 1、同步一般办法82. Executor框架的次要成员83. synchronized包含哪两个jvm重要的指令?84. Thread类中的yield办法有什么作用?85. 线程类的构造方法、动态块是被哪个线程调用的86. 什么是 FutureTask87. volatile关键字的作用88. 什么是线程平安?89. volatile 变量和 atomic 变量有什么不同?90. 为什么wait(), notify()和notifyAll ()必须在同步办法或者同步块中被调用?91. 如何确保线程平安?92. 什么是并发容器的实现?93. # 3、同步类94. 如何防止死锁和检测95. 为什么应用Executor框架比应用利用创立和治理线程好?96. wait()办法和notify()/notifyAll()办法在放弃对象监视器时有什么区别97. 讲一下 synchronized 关键字的底层原理98. Java中interrupted 和 isInterrupted办法的区别?99. 什么是可重入锁(ReentrantLock)?100. 线程池工作流程101. Java中活锁和死锁有什么区别?102. 线程的状态转换?103.104. 什么是 Callable 和 Future?105. 线程有哪些根本状态?106. 为什么咱们调用start()办法时会执行run()办法,为什么咱们不能间接调用run()办法?107. 请说出与线程同步以及线程调度相干的办法。108. 什么是阻塞(Blocking)和非阻塞(Non-Blocking)?109. 什么是阻塞式办法?110. Java中的同步汇合与并发汇合有什么区别?111. 什么是竞态条件?你怎么发现和解决竞争?112. 罕用的线程池模式以及不同线程池的应用场景?113. 死锁与活锁的区别,死锁与饥饿的区别?114. Java中原子操作更新字段类,Atomic包提供了哪几个类?115. 向线程池提交工作116. join办法传参和不传参的区别?117. # 4、同步this实例118. 在线程中你怎么解决不可管制异样?119. 在多线程中,什么是上下文切换(context-switching)?120. 多线程有什么用?121. 同步办法和同步块,哪个是更好的抉择122. 为什么代码会重排序?123. Java中interrupted 和isInterruptedd办法的区别?124. 什么是线程平安125. 并行和并发有什么区别?126. 自旋锁的优缺点?127. Java线程池中submit() 和 execute()办法有什么区别?128. 一个线程如果呈现了运行时异样会怎么样129. volatile 是什么?能够保障有序性吗?130. ThreadLocal原理,应用留神点,利用场景有哪些?131. 线程平安的级别132. Java中notify 和 notifyAll有什么区别?

October 25, 2021 · 2 min · jiezi

关于面试问题:一文弄懂二叉树三种遍历方式

关注公众号:高性能架构摸索。后盾回复【材料】,能够收费支付俗话说:学如逆水行舟,逆水行舟;心似平原走马,易放难收。这句话对程序员而言,领会更深。这行曾经越来越卷了,时刻筹备着,。二叉树,在面试中,已是必备的开胃菜。而在二叉树相干的面试题目中,遍历更是常考题目。本文将从二叉树的遍历角度动手,从递归和非递归角度来剖析和解说二叉树的遍历。 遍历二叉树的遍历是指从根节点登程,依照某种秩序顺次拜访二叉树中的所有节点,使每个节点被且仅被拜访一次。二叉树的遍历,有先序遍历、中序遍历以及后续遍历三种。 下面三种遍历形式中的先序、中序以及后序三种形式,是父节点绝对于子节点来说的。如果父节点先于子节点,那么就是先序遍历。如果子节点先于父节点,那么就是后序遍历。而对于子节点来说,如果先左节点,而后是父节点,而后再是右节点,那么就是中序遍历。 如【图一】所示二叉树。其三种遍历后果如下: 先序遍历: A->B->D->E->C->F->G 中序遍历: D->B->E->A->F->C->G 后续遍历: D->E->B->F->G->C->A 为了便于了解代码,咱们先定义下树的节点定义: struct TreeNode { TreeNode *left; TreeNode *right; int val;};先序遍历定义:先拜访父节点,而后遍历左子树,最初遍历右子树。递归置信递归遍历大家都会很容易写进去,且bugfree。因为实现代码很简略。 在上图【图二】中,应用递归遍历,就是将其左子树和右子树也当做一棵树来进行解决。代码如下: void PreOrder(TreeNode *root) { if (!root) { return; } // 遍历根节点(此处仅为输入,读者也能够依据理论须要进行解决,比方存储等) std::cout << root->val << std::endl; // 遍历左子树 PreOrder(root->left); // 遍历右子树 PreOrder(root->right);}非递归在非递归操作中,咱们依然是依照先拜访根节点,而后遍历左子树,接着遍历右子树的形式。 达到节点A,拜访节点A,开始遍历A的左子树达到节点B,拜访节点B,开始遍历B的左子树达到节点D,拜访节点D,因为节点D无子树,因而节点D遍历实现 节点D遍历实现,意味着节点B的左子树遍历实现,因而接着遍历节点B的右子树达到节点E,拜访节点E。因为节点E无子树,因而节点E遍历实现 节点E遍历实现,意味着节点B的右子树遍历实现,也预示着节点B的子树遍历实现开始遍历节点A的右子树达到节点C,拜访节点C。开始遍历C的左子树达到节点F,拜访节点F。因为节点F无子树,因而节点F遍历实现 节点F遍历实现,意味着节点C的左子树遍历实现,因而开始遍历节点C的右子树到的节点G,拜访节点G。因为节点G无子树,因而节点G遍历实现 节点G遍历实现,意味着节点C的右子树遍历实现,进而预示着节点C遍历实现节点C遍历实现,意味着节点A的右子树遍历实现,进而意味着节点A遍历实现,因而以A为根节点的树遍历实现。用非递归形式遍历二叉树,须要引入额定的数据结构栈(stack),其根本流程如下:1、申请一个栈stack,而后将头节点压入stack中。 2、从stack中弹出栈顶节点,打印 3、将其右孩子节点(不为空的话)先压入stack中 4、将其左孩子节点(不为空的话)压入stack中。 5、一直反复步骤2、3、4,直到stack为空,全副过程完结。 代码如下: void PreOrder(TreeNode *root) { if (!root) { return; } std::stack<TreeNode*> s; s.push(root); // 步骤1 while (!s.empty()) { auto t = s.top(); s.pop();//出栈 std::cout << t->val << std::endl; // 拜访节点 if (t->right) { s.push(t->right); // 对应步骤3 } if (t->left) { s.push(t->left); // 对应步骤4 } }}中序遍历定义:先遍历左子树,拜访根节点,遍历右子树递归 ...

August 31, 2021 · 2 min · jiezi

关于面试问题:网络面试题集锦

关注公众号:高性能架构摸索。后盾回复【材料】,能够收费支付笔者从事后端技术十余年,期间也面试他人,也有被他人面试,明天特意将这些面试的知识点总结下,心愿可能在工作或者面试中帮忙到大家。 说说OSI模型和TCP/IP模型OSI(Open System Interconnection,开放式通信互联) 是由 ISO(International Organization for Standardization,国际标准化组织) 制订的规范模型。旨在将世界各地的各种计算机互联。然而,OSI 模型过于宏大、简单。参照此模型,技术人员开发了 TCP/IP 协定栈,简化 OSI 七层模型为 TCP/IP 四层模型。取得了更宽泛的应用。 OSI 模型和 TCP/IP 模型比照: 什么是TCPTCP(Transmission Control Protocol 传输控制协议)是一种面向连贯(连贯导向)的、牢靠的、 基于IP的传输层协定。 TCP是如何保证数据牢靠的通过数据流的形式传输,将数据截成正当的长度;对每段报文进行编号,保障数据流的程序;收到数据进行重排序,并且抛弃反复数据;收到报文后,给出确认响应;超时重发;校验和;流量管制(针对本程序的承受能力)和拥塞管制(针对整个网络)。说说TCP和UDP的区别协定差异 性能TCPUDP是否连贯面向连贯无连贯传输可靠性牢靠不牢靠利用场合传输大量数据传输大量数据速度慢快区别总结: TCP 的面向连贯的,在发送数据之前要建设连贯;UDP 是无连贯的,即发送数据之前不须要建设连贯;TCP 提供牢靠的服务,通过 TCP 连贯传送的数据,不失落,不反复,且按序达到。UDP 尽最大致力交付,不保障牢靠交付;TCP 面向字节流,把数据看成一连串无构造的字节流;UDP 是面向报文的,对应用程序的报文既不拆分也不合并;TCP 有流量管制和拥塞管制,UDP 没有拥塞管制;TCP 连贯只能是点到点的,UDP 反对一对一,一对多,多对一和多对多的交互通信;TCP首部至多开销 20 字节,UDP 的首部构造简略,开销小,只有8个字节;因为 TCP 要保护连贯和保障可靠性,所以对系统资源的要求较多, UDP 绝对要小得多。TCP建设连贯的过程TCP建设连贯产生在client端调用connect零碎调用的时候。其目标是为了对每次发送的数据量进行跟踪与协商(即替换单方窗口大小),确保数据段的发送和接管同步,依据所接管到的数据量而确认数据发送、接管结束后何时吊销分割,并建设虚连贯。 TCP建设连贯的过程,是一个三次握手的过程。 第一次握手:client端向server发送连贯申请,SYN=1(SYN示意发送端与接收端要建设连贯),seq = x。此时client端进入SYN_SENT阶段第二次握手:server在收到client端的申请后,向client回复SYN = 1(SYN示意发送端与接收端要建设连贯) 和 ACK = 1(示意对发送端申请进行应答),seq = y, ack = x + 1。此时server端进入SYN_RCVD阶段第三次握手:client端收到server端的申请和响应之后,同样须要向server端回复音讯。向server端发送ACK = 1(示意对server端的响应),seq = x + 1,ack = y + 1.此时客户端进入ESTABLISH阶段。server端在收到该ACK后,也进入ESTABLISH阶段。艰深了解: ...

August 31, 2021 · 1 min · jiezi

关于面试问题:记录一些面试中自己没有回答好的问题

被面试迫害之后,发现自己对一些问题理解的不够深刻,或者明明会用,然而说不出来,明明本人写的我的项目却没方法把思路/流程讲明确,还有之前就间接放弃去理解的继承/对原理的深刻等等,当前想到了就会尽量把它们整顿记录下来工作中有哪些理论的场景能够用到闭包? 闭包:一个函数和对其四周状态(lexical environment,词法环境)的援用捆绑在一起 ——来自MDN(词法环境:依据这个变量的地位来判断它能在哪里应用)解决的问题/应用的目标:在函数外部应用函数内部数据,解决了js没有公有变量的问题回归正题:只有须要公有变量的中央都能够应用闭包,比方防抖节流函数的实现就是用到了闭包,还有开发插件等等,利用场景十分宽泛思维扩大:之前看函数柯里化的时候,始终处于只知其一;不知其二的状态,这里从新做一下整顿 固定参数的实现(间接应用闭包,多个参数往下有限写function即可):但理论应用中,参数常常不固定,不固定参数的实现:必须要调用一次空的,如同有点奇怪(之前看他人的实现都是应用toString,不太分明为什么toString能够判断是不是该返回后果?于是本人试了一下,toString是真的不行,除非手动给函数包一层String……)啊,第一个问题就写了良久,查资料的时候看见他人博客的动画好有意思……而后……就跑偏了……ORZAxios和Ajax的区别? Ajax是基于XHR的封装,依赖于JQueryAxios也是基于XHR封装,然而是应用Promise实现的Axios更便捷,不依赖于任何框架Asyc Await是怎么进行谬误拦挡的 try/catch异步的倒退过程? 回调(事件回调/AJAX)(回调天堂)PromiseGenerator/yield (难以了解)Async/AwaitVUE中$nextTick的应用场景和实现原理? 在dom更新实现之后执行的一个回调实现原理:TODO继承与原型链 prototype和__proto__的区别 __proto__指向prototype每个对象创立之后都会有一个__proto__prototype是函数的内置属性__proto__是对象的内置属性所有的js对象都是Object的实例,继承了Object.prototype的属性和办法...未完待续

August 5, 2021 · 1 min · jiezi

关于面试问题:见招拆招老油条教你如何化解大厂面试官的线程池夺命连环炮

1、什么是线程池?线程池能够了解为一个具备多个线程的线程汇合. 2、应用线程池的益处升高资源耗费。通过反复利用已创立的线程升高线程创立和销毁造成的耗费。进步响应速度。当工作达到时,工作能够不须要的等到线程创立就能立刻执行。进步线程的可管理性。线程是稀缺资源,如果无限度的创立,不仅会耗费系统资源,还会升高零碎的稳定性,应用线程池能够进行对立的调配,调优和监控。 3、线程池的外围参数 corePoolSize 外围线程数,没达到外围线程数时,会创立新的线程。当达到外围线程数时,工作会进去队列 maximumPoolSize 最大线程数,能够为Integer.MAX_VALUE 21亿。当达到外围线程数且队列满了的时候,会去创立额定的线程来执行工作,最多不超过最大线程数 keepAliveTime 存活工夫,当工作解决实现,额定的线程存活一段时间后,会自行销毁。闲暇等待时间(该参数默认对外围线程有效,当allowCoreThreadTimeOut手动设置为true时,外围线程超过存活工夫后才会被销毁) TimeUnit 闲暇等待时间的单位 BlockingQueue :工作进来,如果外围线程数满了,则工作进入队列中期待。 ThreadFactory 线程创立工厂 RejectExecutionHandler回绝策略,当最大线程数满了并且队列也满了的时候,如果再有工作进来就会启用回绝策略。 参考源码 /** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters and default thread factory and rejected execution handler. * It may be more convenient to use one of the {@link Executors} factory * methods instead of this general purpose constructor. * * @param corePoolSize the number of threads to keep in the pool, even * if they are idle, unless {@code allowCoreThreadTimeOut} is set * @param maximumPoolSize the maximum number of threads to allow in the * pool * @param keepAliveTime when the number of threads is greater than * the core, this is the maximum time that excess idle threads * will wait for new tasks before terminating. * @param unit the time unit for the {@code keepAliveTime} argument * @param workQueue the queue to use for holding tasks before they are * executed. This queue will hold only the {@code Runnable} * tasks submitted by the {@code execute} method. * @throws IllegalArgumentException if one of the following holds:<br> * {@code corePoolSize < 0}<br> * {@code keepAliveTime < 0}<br> * {@code maximumPoolSize <= 0}<br> * {@code maximumPoolSize < corePoolSize} * @throws NullPointerException if {@code workQueue} is null */ public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); } ...

July 12, 2021 · 3 min · jiezi

关于面试问题:Java高质量面试总结

面试个别都是由浅到深去问,思路是: 先考查根底是否过关,因为基础知识决定了一个技术人员倒退的下限再通过深度考查是否有技术激情和深度以及技术的广度同时可能会提出一些质疑和挑战来考查候选人是否与有不同意见的人沟通 考查内容和形式基础知识技术上深度与广度兼顾基础知识: 考查根底的时候个别都不会深刻地去问,次要目标是考查知识面 计算机实践根底: 计算机网络数据结构计算机组成原理计算机操作系统JDK: 源码汇合BIO或者NIOannotation等JVM: 内存模型类加载原理数据库: 索引事务死锁等并发: 并发的优缺点内存可见性 - volatile锁同步线程池框架网络: TCPHTTP常见设计模式 深刻考查深刻考查: 深刻考查不会像考查根底时八面玲珑,而是会在某个点上深刻去聊这个点能够是让候选人本人选一个点,也可能面试官依据简历内容去选次要目标是考查候选人对某个技术点的深刻把握水平技术是相通的,如果一个人能在某个技术点上达到很深刻的水平,其余点上也不会有太大问题,如果某个人在宣称很理解的技术点上都支支吾吾,只知其一;不知其二,多半能够判断此人要么技术无限,要么遇到问题不愿深刻考查考查工程师的工程能力,比方: 做过哪些项目? 遇到最难的问题是什么? 怎么解决的? 说说最有成就感的一项工作深刻考查的技术点: Java框架: Spring源码的AOP和IOCJDK: ConcurrentHashMap如何进步并发度NIO的原理,包含零拷贝,堆外内存以及优缺点虚拟机: 包抵触,类抵触的造成原理以及解方法,能够引申到JDK 9的模块化设计TCCL的存在价值服务器: Tomcat源码Netty源码数据结构: 数组链表树图排序算法分布式: 缓存利用一致性哈希RPC原理和设计 - 通信协议,序列化形式,超时机制等负载平衡分布式缓存架构设计分布式音讯音讯队列设计与应用分布式环境下中间件部署分布式事务paxos中间件: MQES数据库: 数据库性能优化 - 慢SQL,索引优化,大事务,内核参数调优MySQL数据库底层原理工作中遇到的数据库问题以及解决办法Redis并发: 非阻塞锁CAS并发对编译器优化的影响线程池调优工作中遇到的并发问题以及解决办法技术趋势: Docker微服务 业务相干做的我的项目所应用的技术栈以及其中的优缺点?如果从零开始,能不能从新将其实现?以后零碎的应用方是谁? 用户量多大? 用户集中应用的工夫点?零碎落下了哪些数据? 这些数据的应用方是谁? 零碎的依赖方是谁?从技术,产品,业务的角度去画下相干的流程图 工作交接和产品,业务,经营,技术之间的工作交接: 晓得本人的职责边界弄清楚哪些是本人须要做的哪些是其余的人应该做的交换起来不卑不亢 面试筹备面试最好的筹备形式: 肯定是平时多多积攒遇到问题不要回避深刻去思考并解决在解决一个个问题的过程中积攒解决问题的能力,造成本人的常识体系如何提前准备将本人平时积攒展示进去: 针对面试考查内容知识点思考答案以及扩大.如果能晓得大部分,就要更加深刻一部分.这个过程次要是整顿本人的常识体系回顾整顿简历和过往我的项目中的"难点","亮点",因为这是用来辨别候选人的重要的点.面试肯定会问"在我的项目中经验最大的技术难点是什么?" 整顿一下思路,不至于在面试时因为工夫长远而回顾不起来细节影响面试成果沟通过程要做到有理有据,不卑不亢.在技术问题上保持本人的主观和准则,依据独特认可的事实进行逻辑判断得出观点 面试内容Java根底private润饰的办法能够通过反射拜访,那么private意义是什么? 考查对Java设计的把握水平 Java的private修饰符并不是为了相对安全性设计的,更多的是对用户惯例应用Java的一种束缚从内部对对象进行惯例调用时,能够清晰理解类构造Java中如何利用反射获取一个类的字段?常见的类加载Java类的初始化程序? Java类的初始化程序: 基类动态代码块,基类动态成员变量(并列优先级,依照代码中呈现的先后顺序执行,并且只有第一次加载时执行)派生类动态代码块,派生类动态成员变量(并列优先级,依照代码中呈现的先后顺序,并且只有第一次加载时执行)基类一般代码块,基类一般成员变量(并列优先级,依照代码中呈现的先后顺序执行)基类构造函数派生类一般代码块,派生类一般成员变量(并列优先级,依照代码中呈现的先后顺序执行)派生类构造函数局部变量应用前须要显式赋值,否则编译通过不了,为什么须要这么设计? 成员变量: 能够不经初始化,在类的加载过程中的筹备阶段能够赋予默认值赋值和取值拜访的先后顺序具备不确定性成员变量能够在一个办法调用前赋值,也能够在办法调用后进行赋值. 这是在运行时产生的,编译器确定不了,所有交给JVM来赋值局部变量: 在应用之前须要显式赋予初始值局部变量的赋值和拜访程序是确定的这样设计是一种束缚,尽最大可能缩小使用者犯错: 倘若局部变量能够应用默认值,可能总会无意间遗记赋值,进而导致不可预期的状况产生ArrayList,LinkList的区别?插入和查找哪个更快?ArrayList的随机插入?LinkList是单向链表还是双向链表?单向链表如何实现一个栈?HashMap的put操作底层是如何实现的?HashTable,ConcurrentHashMap的区别?为什么ConcurrentHashMap并发度更高?ConcurrentHashMap中的get和set什么时候会加锁?如果不加锁会产生什么问题?什么时候是CAS操作?HashMap的原理,在Java 8中做了哪些扭转? 从构造实现上来讲: HashMap实现是数组+链表+红黑树(红黑树局部是JDK 1.8之后减少的)HashMap最多容许一条记录的键为null,容许多条记录的值为nullHashMap是非线程平安的String与StringBuilder的区别? 可变与不可变: String不可变,每一次执行 "+" 都会新生成一个新对象,所以频繁扭转字符串的状况下不必String,以节俭内存是否多线程平安: StringBuilder并没有对办法进行加同步锁,所以是非线程平安的.StringBuffer和String都是线程平安的Vector和Array的区别? ArrayList在内存不够时默认扩大是50%+1个,Vector默认是扩大1倍Vector是属于线程安全级别的,然而大多数状况下不应用Vector,因为线程平安须要更大的零碎开销HashMap和HashTable的区别? HashTable继承Dictionary类,HashMap继承AbstrctMap类HashTable不容许空键值对,而HashMap容许空键值对,但最多只有一个空对象HashTable同步,而HashMap不同步,效率上比HashTable要高ConcurrentHashMap和HashTable比拟,两个线程并发拜访Map中同一条链,一个线程在尾部删除,一个线程在后面遍历查找.为什么后面的线程还能正确的查找到前面被另一个线程删除的节点? ConcurrentHashMap交融了HashTable和HashMap二者的劣势: HashTable是做了同步的,是线程平安的,而HashMap未思考同步,所以HashMap在单线程状况下效率比拟高HashTable在多线程的状况下,同步操作能保障程序执行的正确性然而HashTable是阻塞的,每次同步执行的时候都要锁住整个构造ConcurrentHashMap正好解决了效率和阻塞问题: ...

July 8, 2021 · 4 min · jiezi

关于面试问题:一场来自BAT大厂的PHP模拟面试

伯乐相“码”专栏二:一场来自BAT大厂的PHP模仿面试 hello 大家好,上集中Bug君用亲身经历的招人面试案例,给大家分享了一个十多年技术老炮面试中次要考查的问题和技巧,明天同样邀请了一位BAT大厂的T3搭档带来他的一场面试经验,同样对面候选人也是做了十年研发的技术高手,一起来看看他们之间的“博弈”吧 https://www.bilibili.com/vide... 第一集播出后咱们私下收到了不少好评和留言,感激大家关注也欢送大家继续和咱们专栏节目进行交换互动! https://www.showmebug.com

June 22, 2021 · 1 min · jiezi

关于面试问题:从拒绝到被拒绝

什么时候开始有了为本人而工作的想法,什么开始尝试放弃在网络上投简历。 2021,新的一轮工作季的开始,你投了太多的简历,太多的邮件,太多的尝试,而到头来播种的却是从回绝到回绝。 一天的开始,不停的失去了被拒的音讯,通常都是第一轮就被拒了。 总想要写点什么,留念成长的经验还是被打击后的刚强? 对面试步骤不是十分分明的话,能够参考: 2021 疫情期间美国公司技术岗的面试流程 文章中的内容。 物流传感数据公司 个别都不会将公司的具体名字写上来,一是怕最初引起不必要的麻烦,只是在这里对公司的行业类型进行一些形容。 这个公司是在面试过程的第二步被挂掉的。在招聘人员电话面试实现后,招聘人员始终在强调他只是收集相干信息,而后将数据提交到后盾中让我的项目须要的成员进行抉择。 基本上来说这个公司的面试就是你本人把你的简历读一遍罢了,从大学毕业将所有的工作都过一遍,看看有没有什么问题。 时长差不多 30 分钟,没有什么亮点能够陈说。 软件征询公司 这个软件征询公司的面试流程进入到了 Step 3(第三步)了、 这个软件征询公司是在美国的软件征询公司,提供的是英文的服务。 然而不分明为什么给面试的却是一个华人。这个有点奇怪,在面试的过程中全程应用中文,有时候会夹杂一些英文。十分不好意思的纠正了公司面试的人的发音谬误,这个是显著的谬误。 这个面试还是有点意思的,能够说道说道。 面试预订工夫是 30 分钟,然而不晓得是在那个沟通渠道上出了问题,面试我的人的认为面试工夫是 1 小时 30 分钟,然而我始终认为是 30 分钟。 寒暄的工夫很短,没有超过 10 分钟,余下的 1 个多小时都在做题,因为我在1 小时后还有会,没有太多的工夫去纠结细节。 但面试经验还是举世无双的,素来没有遇到过。 在面试的头一天,他们发了一个 GitHub 的仓库过去,在仓库中有一个原始设计好的我的项目,我的项目构造是规范的 Spring API 设计。性能也不是非常复杂,为了简化,他们没有应用数据库,应用的是写死的数据。 在面试前我就看了一眼,理解了下具体须要做的是个什么货色。 在面试的时候出问题了,首先对方问我能不能理解到要做的是什么,我说基本上理解了,一个 SpringBoot API,要做的货色构造还比拟清晰。 随后,下一步就是对方拿了一个残缺的 Task 过去,这个 Task 是要求写一个逻辑,这个逻辑就是依据输出的数据到 API 运行后返回须要的后果。 输出数据格式没有定义,算法不简单,然而有点内容,后盾数据结构有,但我没有工夫认真看。 在这里,和面试的人产生了不少的抵触: 他心愿是写一个测试驱动,通过先写测试而后再写逻辑,我是想先写逻辑,再写测试。逻辑层的定义,我心愿在逻辑层上写子函数,对方心愿我先想明确再决定。不停的纠正要依照算法,要求,不要有本人的想法。工夫不够,没有太多的沟通,面试感觉十分不好。 最初,在 1 个小时后,我提出了我有会议还要进行,没有方法实现这个 Task。而后不欢而散。 终于体验到了在美国面试 IT 技术岗的时候,防火防盗,防中国人。 总结下这个公司的面试问题有上面几点: 公司提出的内容太多,没有方法在 1 个小时内实现所有的逻辑。参加面试的对方过于强调本人要什么,并不是十分在意或者不容许应聘者有本人的想法,这个可能和公司的业务性质无关。公司是软件外包公司,他们只关注实现,并不在意做的货色是什么。面试题目标出发点是好,通过一个残缺的逻辑来考查面试人的情况,但他们忘了,我不是来帮你们解决 Task 的,这个 Task 和我无关,我并没有责任去保障你的 Task 的实现状况。沟通十分不顺利,对方并不理解我想什么,我也没有心理去理解对方想什么。 ...

May 13, 2021 · 1 min · jiezi

关于面试问题:前端面试前端进阶常见重点问题清单

前戏:又到了一年中跳槽的好日子,当初的前端开发曾经不像几年前的前端了,曾经越来越内卷化,面试越来越难,大厂越来越难进,毕业生难找到工作且工资低,好公司的前端岗都是宁缺毋滥的状况,让我想起了当年Android和IOS开发衰亡而后到需要饱和的那几年。 想要破局就要一直的打造本人的外围竞争力。我集体通过平时的学习总结出了进阶前端专家同时也是面试中常常会呈现的问题,以下是我集体认为进阶到前端专家(俗称大佬)的必须要懂的前端问题清单,一方面是给本人的指标,一方面是分享给大家,如有不好的中央,大家也能够指出,独特学习: 清单就分模块来列举,为不便大家记忆和篇幅问题对应的答案、口试题目就不去列举了,同时也能考验大家的检索式学习(来自《认知本能》): JS说一下toPrimitive和类型转换说一下变量晋升和函数晋升的优先级为什么0.1+0.2不等于0.3,如何解决?什么是闭包,闭包有哪些利用场景什么是柯里化,手写一下func(1)(2)(33)...的累加实现对象深拷贝有哪些办法?手写一下对象深拷贝说一下new和.的优先级手写new的执行过程什么是js函数式编程、纯函数、高阶函数防抖和节流函数的区别,手写一个防抖bind、call、apply的区别,手写一个bind什么是面向切面编程instanceof和typeof能精确判断援用类型么,如何精确判断援用类型?什么是类数组,如何转换成数组讲一下原型链,为什么Function.prototype === Function.__proto__讲一下js继承的几种形式的优缺点,手写一个寄生组合继承讲一下promise原理,实现一个简略的promise讲一下js事件循环,宏工作、微工作的区别手写公布订阅模式箭头函数须要留神哪些问题 CSS行内和块级元素的区别css盒模型有哪些和区别css选择器优先级CSS中哪些属性不能够从父元素继承垂直居中有哪些办法什么是BFCCSS 动画实现一个菊花图如何设置小于12px的字体,画一条0.5px的线挪动端1px解决方案rem和em和vh的区别CSS 实现一个三角形、正方体响应式和自适应的区别如何适配多种设施的屏幕HTML5什么是HTML语义化、SEO手写一个右边固定左边自适应的布局手写一个圣杯布局、双飞翼布局script标签、style标签、link标签哪些会阻塞渲染有做过canvas吗 浏览器GET和POST的区别,什么是restfulAPI什么是事件代理、事件冒泡、事件捕捉cookie和localstorage、seeionStorage的区别讲一下从浏览器输出url到最终页面出现的过程如何解决列表渲染过多DOM元素的卡顿问题如何解决浏览器缓存问题,强缓存、协商缓存的区别有遇到哪些IE浏览器兼容性问题,如何解决的?框架(vue)Vue的生命周期都干了些什么Vue组件通信的形式有哪些watch、methods 和 computed 的区别什么是MVVM说一下双向绑定原理,手写个简略的双向绑定你感觉Vue源码中有哪些亮点v-for中为什么要应用keyvue的高级用法有哪些及作用vue-Router原理是什么vue-Router钩子函数的作用Vue的nextTick原理是什么什么是虚构DOM简略说一下Vue和React的意识,之间的区别Vue3更新了哪些货色有理解Vite吗前端工程化单页和多页利用的区别什么是工程化、模块化、组件化写过通用性组件吗你晓得哪些前端性能优化办法简略说一下webpack原理什么是webpack树抖动、scope hoisting什么是sourcemap如何实现多页面打包,挪动端适配打包有写过loader或plugin吗什么是SSR、如何实现SSR有做过跨端开发吗网络什么是TCP/IP什么是跨域,如何解决为什么要三次握手四次挥手你晓得哪些http响应状态码,别离示意什么https为什么平安什么是xss,csrf其余平时是怎么学习前端的最近在关注哪些新技术有造过哪些轮子为什么抉择前端有做过后端开发吗最初如果本文对你有帮忙的话,心愿您能给个赞~

May 1, 2021 · 1 min · jiezi