9.18 杭州丁香园 实习一面(28分钟)

自我介绍

讲一下你了解全栈吗?

因为我们在在开发过程中,有时候前端前后端的同学会相互的进行一个协作交流。全站的话就是从前端开发到后端开发全过程都要参与的一个。

讲一下你对他你觉得全栈开发有什么好处?

开发的话,在我看来他会,因为你正常来说是前端跟后端分开开发的。如果作为一个全栈开发的话,它有一种能把把控全局,前端后端的业务都比较的清晰了解。可以,比如你从前端开从后端开始开发,开发完之后相关的需求你直接就可以从后端的视角来来用前端来进行一个开发,更更流畅。

浏览器内我们输入www.baidu.com然后敲击回车,在敲击回车之后到页面渲染完成,这整个过程都经历了什么事情?

服务端如果敲击了这个回车的话,他会先。一般的话,他会先对你这个请求的这个URL进行一个解析,然后看你这个请求方法以及传输的协议,会把这个。会检查这个UIL里面有没有出现一些非法的一些非法的字符。然后对这个因为浏览器有缓存,如果你这个网站已经缓存过的话,它会先到缓存里看看是否有这个请求缓存。如果有的话,就直接把这个缓存返回过去。如果没有的话,网站会通过一个DNS,他会对你这个请求进行一个DNS的解析。解析他会找到本地的一个域名,对本地域名通过DNS解析,一步一步找到对应的那个端口IP地址。然后获取到IP址地址之后,通过一个MAC协议找到对应的一个本机的一个主机MAC协议。最后。通过这个协议找到对应的网关地址,然后就建立一个TCP的连建立TCP连接。连接之后,如果他是TCPI他如果他是ATTP的话,他就如果TCP连接的话,它会进行一个三次三次握手,四次挥手的一个过程。如果它是基于ATTPS的话,因为它是TTATTPS是一个比较安全的一个协议,他他一共有四次握手。当它建立连建立成完建立完建立完连接之后,它会有一个方法,比如get或post的方法来进行一个统一的请求。请求之后从后端获取到资源之后,再进行一个返回,把这个资源通过一个前端的一个映射器展示给前端用户来进行一个查看。

想了解一下你是如何学习这些信息的?

这些信息就是涉及到计算机网络知识,有有一些是课程上学习到的,然后有一些的话是看和B站以及一些相关的技术文档上看到的学习。

在计算机网络里面,你能讲一下HTTPS的S是什么意思吗?

它是基于有一个TLS它这个安全协议,它基于这个TLS这个协议可以,对Http有一个安全的一个效果。

然后你刚才有讲到一个请求对吧?我已经进到了后端,那进到java后端的假设后面是一个spring MVC的应用,它又是怎么如何处理这个请求?

Spring MVC的话一般说正常的spring项目的话,它是基于MVC架构,它会先进入到他一他获取到请求之后,先进入到controler层。他会根据controler层的一些请业务逻辑以及请求进入到service层。对,service层在通过通过到层数据库的一些映射,然后把一些实体类的信息传递给后端。最后再通过model层把把这些数据进行一个返回映射。然后这些通过抗皱层的一些rest API的一个协议,通过一些一般通过json数据传输给前端。

我看你的简历里面写了一个用ps -ef | grep java 什么情况下会用到这个命令?

这行指令一般就比如有一些端口端口号占用,可以根据这个命令来查看有哪些端口有占用情况,然后对端口进行一些杀清除,这个端口进行一个清除。(面试官说这里查的是PID,跟这个命令不对应)

假设你遇到了这样一个问题,你会如何去解决它呢?就是你的上级跟你去讲,你要去学习这方面的知识,你会怎么样。

如果学这方面的知识,我一般来说先通过通过AI通过AI对这个进行分析,然后查然后对他们一些反馈来进行一个进行一个官方文档的一些查看,或者进行一些相关的百度搜索。

你还写到了叫做一个mysql,对吧?能讲一下mysql里面的最左匹配吗?

最左匹配的话它是一个索引的联合,它是一个联合索引的一个原则。他一般来说是要一般来说联合索引要符合最多匹配原则。所以说如果你就比如ABC联合,所以当你是AB的话,它是可以走最左索引。但是如果是BC的话,因为是A没有走索引,所以说BC的话就会导致索引失效。

了解底层原理吗?

没有深入了解

你说的redis的分布式限流,你是用什么做的?

我第二个项目是通过radiation的一个RateLimeter,它是底层是基于令牌桶算法实现的。一般来说限流算法还有固定窗口以及滑动窗口,还有第一那个令牌桶,还有那个低桶那个词滴桶法,基本就那那。

我这个就limit那个RateLimeter底层是基于令牌桶算法的,每次请求每一个请求方法都会都会来给你颁发一个令牌。如果你拥有这个令牌的话,你就可以正常检修。如果没有这个令牌的话,你要不就是等,要不就是一直阻塞等待,要不就是这个请求被拒绝。

底层令牌令牌桶底层是底层了解过它的。

按道理来说radisson里面应该是一个lua脚本的。

他是怎么样去做到你说的这个实现一个令牌桶?

底层的话他就给一个固定的令牌桶数量,每次请求会将这个令牌桶的数量加1。如果他如果到达这个令牌总的数量的时候,令牌总就不会再进行对他对请求进行一个颁发。

你里面还讲到了一个锁,什么叫做锁的自旋?

锁的咨询。CAS它如果没有获取到锁的话,它会一直在自旋等待。然后synchronized和reentrantlock

的那个锁,它是如果你没有获取到锁的话,它就会进行它就会进入阻塞状态。阻塞状态的话它会来回切换,IO会会增大一个。因为每次IO的话它每次重新从阻塞态到运行态的话,它会它都会从用户态到一个内核内核态的一个转换会造成一些资源的浪费以及占用CPU性能。如果通过自旋的话,它会在没有获取到锁,他会自旋自旋,直到获取到锁的话,他就会减少一个切换。

什么叫做锁的可重入?

可重入synchronized和reentrantlock,它都是可重入锁。可重入锁就相当于是我这个所获取到之后,如果退出的话,下一次再想要获取的话,他不需要再重复进重复重复的去抢占这个锁。它这它它的实现是synchronized它是给一个给一个次数。如果你每获取到一次锁的话,他都会次数加1。如果他丢掉这个锁的话,它每次次数减一直到那次数到0的话,它才会不可重入。到0的时候他如果需要再占用再强再要用这个锁的话,就重新跟别的所进行一个竞争。或者是有一些所是公平所,他是要排队的。有一些是非非公平锁的话,他就需要在有所的时候进行一个竞争。

你最近有在学什么知识吗?

最近的话在看并发一些相关的。并发的话我看的是那本java并发编程之美。在那一本书上进行一个学习,在里面我学习到了那synchronized的它是一个它是用在代码和类上的,它是会自会进行一个自动的进入到这段代码的时候,它会它就拥有了锁。然后这段代码代码运行完之后,它它会自动的释放锁。然后reentrantlock的话,它是需要手动的进行一个解锁的过程。同时的话新则它是一个它是一个非公平锁。然后reentrantlock的话,会根据一个底层的选择来选择他他要使用公平锁还是非公平锁。然后volatile它是一个它可以实现一个对所有的对一些变量,对所有的用户是可见的。然后的话他还会阻止一个代码的重排序。因为有一些代码会在多线程的情况下,JVM会根据那个语义来进行一个重新的一个重新的一个代码的顺序调整。但是它如果如果ABC代码,如果C要依赖AB代码的话,那只能在AB代码调换。C代码是不能在AB之上的。然后还有AQS,AQS的话它是很多锁的一个实现,很多扫的一个复利的一个框架。

AQS的核心是什么?

AQS核心就是那个。叫ock,它底层是基于基于实现lock接口。

线程池了解。在线程池里面我们执行了一个任务对吧?那任务他抛了一个未捕获的异常,我们就没有进行对他进行一个执行线程的执行任务的县城和县城城分别都会发生什么事情?

执行这个线程的话,先要看你这个线程是创建的时候,它一个阻塞的一个你当时一个拒绝策略。如果如果你的拒绝策略是一个是有一个考color run policy的话,它是如果你。发如果发生异常的话,是这个拒绝是调用者这个线是调用者的这个线程来去执行这个被阻被被拒绝的这个任务。然后如果他是选用的about policy的话,就会直接抛出这个任务,被县城这拒绝的一个异常。如果是this kind policy的话,他就不会进行一个处理。还有一个discard old policy,他会拒绝,他会抛出最早的一个任务,然后执行该任务。

你说的这个拒绝策略是在什么情况下会执行的?

这种情况是在核心线程核心线程数满,然后在工作那个工作队列也满的情况下,这时候会对一个最大线程数来进行一个增加。直到最大线程数也满的情况下,他会对对你这个先生是来通过你定当时定义的这个拒绝策略来进行一个拒绝。

那这个任务他自己抛了一个未捕获的异常,那么执行这个任务的线程和这个线程池分别会发生什么事情?可能跟你说的拒绝策略应该不是同一个东西,对吧?

这个的话还真没,因为实际当中确实没遇到相关的一些bug,也没深入了解过。

反问

作为我本人的话,如果入入职公司的话,你觉得在你这边看来我会有什么哪方面的一些收获

首先你现在的身份是一个大学生。们需要去解决的一个问题的,就是按照我们需要解决这个问题,就是后面怎么样去做。所以对于我们来说最核心的一个问题,就是如何把一个实习生培养成一个我们需要的一个优秀的一个职场人。是你的身份需要一个转变的这就是对于一个人来说,它是非常大的一个变化了。当然在这个过程中,你看对于大学生或者实习生来说,他肯定很多经验是不足的那我们也会有一些相关的一些培训辅导,然后一些实战的一些东西去帮助他成为我们这样的人。那你能收获到的那不仅仅只是说技术,还有职场的一些事情,做事的方式,协作方面东西,它是一个非常综合的东西。

大概讲一下咱公司的一些技术站,可以吗?

我们的技术站是这样,它的技术线比较多,然后对技术栈也是比较多的那我们这些在我们其中一个,一个是电商平台,它里面其实就是一些简单的spring boot,然后是全家桶,就是jpa,然后像相关的mysql,redis,rocktmq dubbo等等这些东西。像比如说像string cloud或者说dubbo,在这个项目里面是没有用到的,但在其他项目会有用到像这样的框架。

还有一个问题就是后续的大概流程还有什么?

如果觉得我们觉得是候选人是比较合适的话,那后面还会有相关的一些电话面试或者是现场面试。因为你这边是在河南,对吧?对,那如果有的话,那到时候就是一个电话面试。

全部评论
佬,有后续吗
点赞 回复 分享
发布于 10-22 14:58 福建
佬,你那个朋友去了吗
点赞 回复 分享
发布于 11-05 14:37 浙江

相关推荐

10-12 11:52
已编辑
陕西理工大学 Java
四个环节:1.八股 2.项目 3.个人相关 4.介绍公司相关1.转发与重定向区别url访问网址的全过程讲一下反射有没有适合使用反射的场景以设计的思想去想反射适用于哪些场景讲一下对HashMap原理理解对于Map这种数据结构适用的场景垃圾回收的目的是什么,处理了什么问题讲一下G1讲一下线程池线程核心参数线程参数中空闲队列的作用抽象的说一下 锁是在什么情况下适用于什么场景解决什么问题你会在什么情况下选择使用分布式锁,什么情况下使用单体单机锁?你最终选择的判断标准是什么?2.项目缓存怎么做的?方案是怎么做的?从缓存框架来看有什么优化空间?(不会,面试官说可以做多级缓存)缓存做的时候有没有考虑过会出现哪些问题?(面试官引导问 缓存内存相关)做缓存的时候有没有考虑过兜底方案?(面试官说,考虑自动化巡检,预警)限流接口如何设计3.哪些渠道学习学习方式有什么逛GitHub有没有感兴趣的东西有没有研究过大模型更高级的用法(面试官说Agent)自己最近做的项目什么的想发展的方向,未来的规划4.反问,感觉问不下去了,面试官很好,说想问就问。问了培养计划,多久可以参与开发工作。,背了几天的八股,没有对上的/(ㄒoㄒ)/~~。我也想八股吟唱。面试官很好,全程不会的就会给我提示以及给出自己的问题解决方案。好公司不知道,这个面试官很开朗人很好。基本上寄了,希望牛油们能早日拿offer#数字马力#更新——————竟然进复试了,很多问题感觉都没咋答出来,后面的问题感觉是面试官给我讲了很多。这一次我一定要把握机会。大家都要加油。
点赞 评论 收藏
分享
3 5 评论
分享
牛客网
牛客企业服务