杭州某国企 Java 面经

2024-03-05 12:04
文章标签 java 面经 杭州 国企

本文主要是介绍杭州某国企 Java 面经,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

杭州某国企 Java 面经

面试官:这边收到你的xxx简历,现在方便做一个简单的面试沟通吗?

我:方便的方便的,内心OS:面经+1。

1)

面试官:先做个自我介绍吧

我:常规操作,比八股背的熟多了,主要突出我全栈的一个学习过程,并且做了一个开源项目,我这边给大家的建议,尤其是双非同学,如果没啥亮点的话,个人博客和喜欢写一些笔记,画一些思维导图,喜欢看技术书籍,是比较好的亮点,如果不是电话面,可以直接给面试官共享屏幕,或者让他访问你的博客,这是一个很大的加分项,92 的同学直接学历碾压了,本身学历就是亮点,所以可能没有什么产出的话,问题也不是很大,千万别说自己的缺点…

2)

面试官:把你的项目给我简单介绍一下

我:阿巴阿巴,介绍项目的主要两个亮点功能,从需求分析、技术选型、业务实现,一步步讲下来,在重点和难点的时候再多加以阐述即可。

3)

面试官:你的数据是存在哪里的?

我:MySQL 数据库,面试官追问查询优化方面,我主要阐述了慢查询日志的使用,和利用索引覆盖的特性,加快查询速度,这块结合具体的业务场景去讲就好了,可以把 Jemter 的参数跑出来会更可信。

4)

面试官:所有的情况都可以用索引覆盖吗?

我:no,只有 Where、Group By、Join 这些后面的字段如果没有加索引,才能够利用索引覆盖,而且索引并不是加的越多越好,阐述下索引在变动过程中需要维护,这部分时间也需要进行考虑。

5)

面试官:缓存你用过哪些?

我:我的项目主要是用了 Redis,然后面试官追问 Redis 的数据结构底层原理,比如字符串的 SDS,对比原有 C 语言字符串的好处,比如 O(1) 获取长度,不会缓冲区溢出,二进制安全,减少修改字符串的内存重新分配次数(惰性空间释放,空间预分配)

6)

面试官:缓存过期策略了解吗?

我:惰性删除机制在取出 key 时进行过期检查,对 CPU 友好,定期删除机制会每隔一段时间抽取一批 key 执行删除过期 key 操作,对内存更加友好, Redis 采用的是定期删除+惰性删除,此外利用内存淘汰机制进行兜底,数据淘汰策略在 Redis 4 版本以前有 6 种,4 以后新增了两种 LFU 的算法。

7)

面试官:你用过哪些设计模式?

我:阿巴阿巴,主要包括门面模式(外观)、适配器模式、注册器模式、模版方法模式、策略模式等等,结合业务代码区讲就好了。

8)

面试官:你觉得什么时候需要用到单例模式?

我:频繁实例化被销毁,频繁 new 对象,保证全局只有一个对象实例,创建对象耗时过多或者耗费资源过多,经常使用该对象,频发访问 IO 的对象,比如数据库连接池,SpringBean 的单例注册表也是有一个缓存池。

9)

面试官:解释下线程安全和不安全

我:阿巴,多线程竞争一个共享资源,这边可以介绍下临界区等,操作系统的知识,还可以介绍下死锁等等,可以结合具体的超卖问题。

10)

主要问了下能多久到岗,实习多久等等,我反问了工作时间和待遇,然后直接拒了,实习生还要加班,而且待遇太低了,直接面经+1。

开源 AI 项目 Gitee 地址:https://gitee.com/falle22222n-leaves

欢迎老铁们 Star 下!累计总后端 700 + Star ,最近在写详细的文档,后续将会推出。⭐⭐⭐

北京某科技数字有限公司 Java 面经

1)

面试官:先讲一下 RESTFUL 风格怎么使用?

我:阿巴阿巴,四种方法讲一下,然后配合 @PathVariable 注解讲一下,路径占位符讲一下,RESTFUL 的好处讲一下,比如路径更简洁、安全(不暴露参数),高效(支持缓存),差不多就行。

2)

面试官:Post 请求的数据是放在哪里?

我:呃呃呃,表单用一个对象存,然后请求有请求头,请求行,请求体,请求体存储表单数据,简单的前端问题,可以对比下 GET 和 POST 区别,比如安全方面,数据长度限制方面等等,只要你会的,都可以按逻辑进行阐述,简单的问题其实去做一个完整的阐述,表达这块建议大家多面试练练。

3)

面试官:文件这块是怎么传输的?

我:我项目是上传过 Excel 文件主要利用了,MultiPartFile 这个工具类 SpringMVC 提供的,用 IO 读取就可以了,我写了个 Excel 工具类读取。

4)

面试官:你项目的安全框架用了什么?

我:阿巴阿巴,这边没用 SpringSecurity、Shrio、Sa-Token ,我就简单用了 AOP 底层代理模式+适配器+一个 JWT,主要用 Token 令牌进行一个,Token 存 Redis,然后动态刷新 Token 机制,用户无感知,这边要听 Redis 的过期策略和内存淘汰机制就更好了,能输出一波。

5)

面试官:JWT 密钥放在哪里?

我:服务端配置文件编写,我这边每个用户注册有 AK,SK,SK 就是密钥,可以根据密钥生成不同的 Token。

6)

面试官:Token 的参数构成有哪些?

我:Header(签名算法和令牌类型),PayLoad 负载包含用户信息、令牌颁发时间、过期时间等等,Signature 是根据头部、负载、密钥加密后合成的结果,一般的 xxx.xxx.xxx。

7)

面试官:Token 存放在哪里?

我:LocalStorage 这边,发送 Axios 请求时,多一个 Authorization 请求头携带 Bearer 空格 + Token

8)

面试官:Token 是怎么生成的?

我:JWT 工具类,用户登录之后,前端会得到一个我后端 Generate 的一个参数,前端获取后存下来就好。

9)

面试官:ArrayList,LinkedList,HashMap 各自的优缺点和使用场景讲一下

我:这边不作赘述了,常见的八股文,按自己的实践和单列集合和双列集合使用场景就可以了,考源码也无所谓都是简单题,比如 Map 的 Put 流程,为什么链表大于等于 8 并且数组长度>=64 树化,为什么从 8 到 6 后退化,Hash 冲突有几种解决方案,各自有什么好处,多线程 HashMap 安全吗,Key Value 为 Null 问题等等,可以讲的东西太多了,可能一个问题讲好几分钟也是正常,只要面试官想听,其实可以一直讲。

10)

面试官:ArrayList 和 LinkedLIst 获取数据的时间复杂度

我:O(1) 和 O(N),数组和链表…

11)

面试官:你数据库掌握能力怎么样?

我:比较弱,只做过几个多表连接,然后说一下,左右连接的区别,内连接,再说一下实际项目怎么写的 SQL,怎么做 SQL 优化等等,索引数据类型,索引失效,事务,隔离级别,三大日志,刷盘时机,MVCC 怎么实现的?行锁,表锁,意向锁,共享锁,独占锁,InnoDB 引擎对比 MyISAM 的优势等等,数据库要是问起来半小时起步了。

12)

面试官:输入 URL 后的一系列流程是什么?

我:URL 检查、缓存查询(计算机网络)、DNS 解析、获取 MAC 地址、TCP 三握、HTTPS 握手、返回数据、页面渲染(DOM)、TCP 四挥,其实这里面每一个都可以阐述,基本是计算机网络的基础知识。

13)

反问技术栈、主要做的业务,以及工作时间和待遇,总体来说面试比较简单,比较浅层,没啥深度考究,过了一天电话说 OC 了,然后是经典流程,拒了…未完待续

开源 AI 项目 Gitee 地址:https://gitee.com/falle22222n-leaves

欢迎老铁们 Star 下!累计总后端 700 + Star ⭐⭐⭐

这篇关于杭州某国企 Java 面经的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/776441

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2