您的位置:网站首页 > Java教程 > 正文

Java后端工程师的面试经历

类别:Java教程 日期:2019-7-6 5:29:26 人气: 来源:

  经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征。

  都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言,之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比较大

  电话面试,随便问了些技术问题,最后还问了个LeetCode里面medium级别的算法题,偏简单

  redis有没有用过,常用的数据结构以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别?redis cluster有没有了解过,怎么做到高可用的?redis的持久化机制,为啥不能用redis做专门的持久化数据库存储?

  了不了解tcp/udp,说下两者的定义,tcp为什么要三次握手和四次挥手?tcp怎么有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在什么地方,有什么用?(参考quic)

  http与https有啥区别?说下https解决了什么问题,怎么解决的?说下https的握手过程。

  既然你提到了raft算法,讲下raft算法的基本流程?raft算法里面如果出现脑裂怎么处理?有没有了解过paxos和zookeeper的zab算法,他们之前有啥区别?

  索引的常见实现方式有哪些,有哪些区别?MySQL的存储引擎有哪些,有哪些区别?InnoDB使用的是什么方式实现索引,怎么实现的?说下聚簇索引和非聚簇索引的区别?

  自己的回答情况,redis这块没啥问题,具体rehash有印象是渐进式的,但是具体原理可能答的有点出入。tcp的time_wait这块答的不是很好,之前没有了解过quic机制的实现,所以问可靠性udp的时候,基本上脑子里就照着tcp的实现在说。https这块没啥说的,之前项目里面有用到类似的东西,研究的比较清楚了。raft算法这个因为刚好在刷6.824(才刷到lab2。。。),答的也凑合,不过paxos和zab算法确实不熟悉,直接说不会。MySQL这块很熟了,包括索引,锁,事务机制以及mvcc等等,没啥说的,都已经补齐了。协程和线程,主要说了go程和Java线程的区别以及go程的调度模型。面试官提示没有提到线程的有内核态的切换,go程只在用户态调度。最后一个算法题,首先说使用HashMap来做,说空间复杂度能不能降到O(1),后面想了大概5min才想出来原地置换的思。

  主要针对自己最熟悉的项目,画出项目的架构图,主要的数据表结构,项目中使用到的技术点,项目的总峰值qps,时延,以及有没有分析过时延出现的耗时分别出现在什么地方,项目有啥改进的地方没有?

  这面面的是阵脚大乱,面试官采用刨根问底的方式提问,终究是面试经验不够,导致面试的节奏有点乱。 举个例子:

  答:1 起一个go程大概只需要4kb的内存,起一个Java线MB的内存;go程的调度在用户态非常轻量,Java线程的切换成本比较高。接着问为啥成本比较高?因为Java线程的调度需要在用户态和内核态切换所以成本高?为啥在用户态和内核态之间切换调度成本比较高?简单说了下内核态和用户态的定义。接着问,还是没有明白为啥成本高?心里瞬间崩溃,没完没了了呀,OS这块依旧是痛呀,支支吾吾半天放弃了。

  后面所有的提问都是这种模式,结果回答的节奏全无,感觉被套了。大多度都能回答个一二甚至是一二三,但是再往后或者再深入的OS层面就GG了。

  后面还问了一个问题定位的问题,服务器CPU100%怎么定位?可能是由于平时定位业务问题的思维定势,加之处于状态,随口就是:先查看面板看有无突发流量异常,接着查看业务日志是否有异常,针对CPU100%那个时间段,取一个典型业务流程的日志查看。最后才提到使用top命令来看是哪个进程占用到100%。果然阵脚大乱,张口就来,捂脸。。。

  本来正确的思应该是先用top定位出问题的进程,再用top定位到出问题的线程,再打印线程堆栈查看运行情况,这个流程换平时肯定能答出来,但是,但是没有但是。还是得好好总结。

  最后问了一个系统设计题目(朋友圈的设计),白板画出系统的架构图,主要的表结构和主要的业务流程,如果用户变多流量变大,架构将怎么扩展,怎样应对?

  这个答的也有点乱,直接上来自顾自的用了一个通用的架构,感觉毫无亮点。后面反思应该先定位业务的特点,这个业务明显是读多写少,然后和面试官沟通一期刚开始的方案的用户量,性能要求,单机目标qps是什么等等?在明确系统的特点和约束之后再来设计,而不是一开始就是用典型互联网的那种通用架构自顾自己搞自己的方案。

  一点很重要的,平时blog和专栏看的再多,如果没有自己的思考不过是过眼云烟,根本不会成为自己的东西,就像内核态和用户态,平常也看过,但是没细想,突然要自己说,还真说不出来,这就很尴尬了。勿以浮沙筑高台,基础这种东西还是需要时间去慢慢打牢,多去思考和总结。

  能够熟练掌握使用JavaWeb技术实现项目的开发从项目开发流程,到需求分析,再到代码编写,手把手开发项目,知

  java虚拟机是执行字节码文件(.class)的虚拟机进程。。java源程序(.java)被编译器编....

  所谓的Java高级程序员往往是经验和能力的结合,并不是说掌握了哪几个技术就是高级程序员了,能否把掌握....

  工作已经有半年了,突然想写点东西,大学的时候就有写日记的习惯,但是自从去Java06班学习一直到现在....

  随着信息化的发展,IT培训受倒了越来越多人的追捧。在开发领域,JAVA培训成为了许多人的首选!jav....

  Java技术是开发电商系统中出类拔萃的程序语言,建设B2B网店系统选择java技术是上好的选择。

  勾选接受许可协议后选择对应的压缩包,下载完成后上传的linux服务器上,这里是上传到/tmp 目录下。 也可以通过wget直接下载,注...

  认识的方法有很多,比较集中的有这么几种:比较法,他人评价法,内省法,实践法,测量法。

  工程师要生活,要满足基本需求:那就给出超出其期望值的待遇,让其衣食无忧,不再为是自己单独租房子还是和....

  .良好的编码能力。软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现。编码能力直接决定....

  技术不同,简单的可以理解为:初级中级的只关注代码,编程。高级的就要考虑系统的架构,整体框架。

  如今,“Java”作为所有编程语言中最热门的技术,也是第一编程语言,可以说它几乎无处不在。目前全球有....

  无论你之前做java开发时技术有多强,换了行业之后你就是个新人。如何在一个新的行业里成为一个优秀的人....

  各位程序员朋友们,本人立足于IT圈也快六年多了。之前也写过不少技术类的博客。技术聊的不少。什么高并发....

  本文档的主要内容详细介绍的是使用JAVA设计的贪吃蛇程序免费下载,可以控制上下左右,吃食物计分,....

  在IT界,成功的完成一个项目的需要销售人员、售前人员、项目实施人员(开发人员)、售后服务人员等密切协....

  对于我们这些刚入门的运维小白来说,极强的好奇心总会我们去涉猎各种技术,弄到最后很可能该学的知识半....

  一个好的硬件工程师实际上就是一个项目经理,他/她需要从交流获取对自己设计的需求,然后汇总,分析成具体的硬...

  ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于金....

  我在哪里可以获得34972A所有签证命令的手册? 我打算使用套接字和以太网接口在Java中编程。 以上来自于谷歌翻译 &nb...

  重要的事情所以说三遍。如今前端圈大热,除了前端项目天生开源的优势之外,Github这个网站功不可没。....

  16年毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点....

  我把我的电脑的Java更新到1.80Y101-B13(此时最新可用),但是我注意到MPLAB X IDE V3.40仍然使用1.8O091-B14。似...

  最近室友闲聊的时候告诉我,他在网上收集了做为一个java程序员必须要会的东西,他觉得自己要有个方向,....

  针对于Java的35 个代码性能优化总结 前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与...

  IoT(Internet of Things)是大家的未来。但让人尴尬的是,这些代表未来的炫酷产....

  领导把公司的一个重要研究项目(命名为顺耳风)交到了我手上--关键词系统,也就是当下最热门的热词唤....

  作为一名从传统行业成功转行算法工程师的老人,经常会有想转行互联网,或者是算法工程师的朋友询问我转行的....

  对于开发游戏项目的来说,Timer 这个东西肯定不会陌生,今天对以前自己经常使用的定时进行了一番....

  完成一个java application应用程序,在应用程序主进程中新开一个线程,此线程进行死循环,....

  首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业....

  集成稳压器按出线端子多少和使用情况大致可分为多端可调式、三端固定式、三端可调式及脖子上有痣代表什么单片机开关式等几种。

  废话不多说,在java这行业待了有一年多了。从刚开始的程序是什么都不知道打现在渐渐会做点东西了(其实....

  近年来,微服务在应用开发和部署方面取得了显著的进步。将应用开发或者重构成微服务以分离服务,通过 AP....

  大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#。....

  首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业....

  首先,Java、PHP均是IT行业内比较流行的编程语言,从目前的发展趋势来看,未来依然有广阔的应用场....

  题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生....

  计算机、统计学等相关专业,具有深厚的统计学、数学、数据挖掘知识,熟悉数据仓库和数据挖掘的相关技术;

  Java 程序员大多会一些设计,知道设计模式,知道 IoC;相反,.NET 程序员很多没有做过设计,....

  make是unix和其他操作系统上最持久的工具之一。自1970年问世以来,make至今仍旧是大多数程....

  编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机....

  本文档的主要内容详细介绍的是使用服务器和客户机及java进行网络通信的程序和流程图免费下载。

  

关键词:java后端技术
0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved