首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
AI大模型开发工程师
获赞
27
粉丝
22
关注
4
看过 TA
17
男
北京大学
2019
人工智能
IP属地:湖南
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑AI大模型开发工程师吗?
发布(538)
评论
刷题
收藏
AI大模型开发工程师
关注TA,不错过内容更新
关注
2021-06-12 20:06
北京大学 人工智能
掌握这20多道刁钻的HashMap 面试题,我把阿里面试官吊打了!
1:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。 transient Node<K,V>\[\] table; 2:HashMap 的工作原理? HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry接口)实现,HashMap 通过 put & get 方法存储和获取。 存储对象时,将 K/V 键值传给 put() 方法: ①、调用 hash(K) 方法计算 K 的 hash 值,然后结合数组长度,计算得数...
0
点赞
评论
收藏
分享
2021-06-12 20:06
已编辑
北京大学 人工智能
什么是高性能服务器架构?【不只是思路】
在服务器端程序开发领域,性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问题的基本策略和经典实践,并分为几个部分来说明: 1. 缓存策略的概念和实例 2.缓存策略的难点:不同特点的缓存数据的清理机制 3.分布策略的概念和实例 4.分布策略的难点:共享数据安全性与代码复杂度的平衡 缓存 缓存策略的概念 我们提到服务器端性能问题的时候,往往会混淆不清。因为当我们访问一个服务器时,出现服务卡住不能得到数据,就会认为是“性能问题”。但是实际上这个性能问...
0
点赞
评论
收藏
分享
2021-06-12 20:05
已编辑
北京大学 人工智能
面试常被问到的 JDK 命令,你知道几个?
JDK 常用命令 先给大家看一张总览图,然后我们一个个命令去使用一下,感受一下。 JPS 说明:首先通过上图,我们看到使用 jps 或者 jps | grep -v Jps 命令的时候是可以找到当前系统所有JVM。上面第二条命令是过滤本身的 Jps 程序。可以看到,输入这个命令后,会展示出当前系统所有的 Java 程序,并且会输出进程号 pid(也就是前面的数字)。 我们通过命令 man jps 简单的看下说明,如下: 可以看到 jps 命令有五个参数,每个参数的含义如下, -q: 不输出类名信息和参数,只输出进程号 -m:展示输入到 main 方法的参数 -l:展示 ma...
0
点赞
评论
收藏
分享
2021-06-12 20:05
北京大学 人工智能
面试官:对象不再使用时,为什么要赋值为 null ?
前言 许多Java开发者都曾听说过“不使用的对象应手动赋值为null“这句话,而且好多开发者一直信奉着这句话;问其原因,大都是回答“有利于GC更早回收内存,减少内存占用”,但再往深入问就回答不出来了。 鉴于网上有太多关于此问题的误导,本文将通过实例,深入JVM剖析“对象不再使用时赋值为null”这一操作存在的意义,供君参考。本文尽量不使用专业术语,但仍需要你对JVM有一些概念。 示例代码 我们来看看一段非常简单的代码: public static void main(String[] args) { if (true) { byte[] placeHolde...
0
点赞
评论
收藏
分享
2021-06-12 20:05
已编辑
北京大学 人工智能
搞不清Java的接口和抽象类,看这篇就够了!
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激 一、抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: abstract``void``fun(); 抽象方法必须用abs...
0
点赞
评论
收藏
分享
2021-06-12 20:04
已编辑
北京大学 人工智能
你写的API接口代码真的烂,难道不能对返回格式统一处理一下吗?
随着互联网各岗位精细化分工的普及,出现了很多的系统架构设计,比如常见的前后端分离架构,后端提供接口给前端,前端根据接口的数据进行渲染,大家各执其职,效率也非常的高,但是随着接口的增加,如果不统一的规范就会额外的增加大量的沟通成本以及学习成本,对管理者而言是非常的不利。 为此,我在这篇文章分享给大家一个Java生鲜电商平台中如何返回统一格式的API的整体架构设计。 一般系统的大致整体架构图如下: 需要说明的是,有些小伙伴会回复说,这个架构太简单了吧,太low了,什么网关啊,缓存啊,消息中间件啊,都没有。因为这篇主要介绍的是API接口,所以我们聚焦点,其他的模块小伙伴们自行去补充。 接***...
0
点赞
评论
收藏
分享
2021-06-12 20:04
已编辑
北京大学 人工智能
一起来聊聊 ConcurrentMap
我们来看这个经常在多线程的情况下使用的这些个容器,从Map开始讲,Map经常用的有这么几个。 ConcurrentHashMap用hash表实现的这样一个高并发容器。 既然有了ConcurrentHashMap正常情况下就应该有ConcurrentTreeMap,你可以去查查,它没有,就等于缺了一块。 为什么没有呢?原因就是ConcurrentHashMap里面用的是cas操作,这个cas操作它用在tree的时候,用在树这个节点上的时候实现起来太复杂了,所以就没有这个ConcurrentTreeMap,但是有时间也需要这样一个排好序的Map, 那就有了ConcurrentSkipListMap...
0
点赞
评论
收藏
分享
2021-06-12 20:04
北京大学 人工智能
面试官:ConcurrentHashMap的读操作不需要加锁?
我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢? ConcurrentHashMap的简介 我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。 JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含...
0
点赞
评论
收藏
分享
2021-06-12 20:03
已编辑
北京大学 人工智能
Java程员必会的Tomcat调优的技巧
1、描述 最近,在补充自己的短板,刚好整理到 Tomcat 调优这块,基本上面试必问,于是就花了点时间去搜集一下 Tomcat 调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍一下,Tomcat 调优大致分为两大类。 1.1 Tomcat的自身调优 采用动静分离节约 Tomcat 的性能调整 Tomcat 的线程池调整 Tomcat 的连接器修改 Tomcat 的运行模式禁用 AJP 连接器 1.2 JVM的调优 调优Jvm内存 2、Tomcat自身调优 2.1 采用动静分离 静态资源如果让 Tomcat 处理的话 Tomcat 的性能...
0
点赞
评论
收藏
分享
2021-06-12 20:03
已编辑
北京大学 人工智能
面试官:Spring 和 Spring Boot 的区别是什么?
概述 对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累、我慢慢理解了这两个框架到底有什么区别,相信对于用了 SpringBoot很久的同学来说,还不是很理解 SpringBoot到底和 Spring有什么区别,看完文章中的比较,或许你有了不同的答案和看法! 什么是Spring 作为 Java开发人员,大家都 Spring都不陌生,简而言之, Spring框架为开发 Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如: SpringJDBC、Sprin...
0
点赞
评论
收藏
分享
2021-06-12 20:03
已编辑
北京大学 人工智能
RabbitMQ和Kafka哪个更吊一点
导言 作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”。基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。 不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。 这篇文章会先介绍一下基本的异步消息模式,然后再介绍一下RabbitMQ和Kafka以及他们的内部结构信息。第二部分(未完成)主要介绍这两种技术的主要不同点以及他们各自的优缺点,最后我们会说明一下怎样选择这两种技术。 异步消息模式 异...
0
点赞
评论
收藏
分享
2021-06-12 20:02
北京大学 人工智能
微服务架构:关于构建大规模应用的介绍
微服务是什么? 微服务就是一些协同工作的小而自制的服务。 无论现在的影响力如何,分布式系统仍然是最容易被忽视的主题之一,至少在大学层面是如此。没有多少学生理解诸如容器化和容错等概念,你也永远不会看到系统项目赢得黑客马拉松。尽管如此,我认为至少对今天的大规模系统如何工作有一个简单的理解是非常重要的。 这个故事是针对初学者的系列中的第一个,例如接受 1 到 2 年级的普通计算机科学教育或者具有自学网络开发经验的人。前几篇文章将对主要概念进行重点介绍,并深入探讨技术细节。然后,我希望探索网络相关的主题、Kubernetes ,以及我在研究中看到的有趣内容。第一个非常简单,旨在解释微服务背后的动...
0
点赞
评论
收藏
分享
2021-06-12 20:02
北京大学 人工智能
最全的 volatile 关键字的总结,赶快收藏一波!
一、简介 volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。 二、并发编程的3个基本概念 (1)原子性 定义: 即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 原子性是拒绝多线程操作的,不论是多核还是单核,具有原子性的量,同一时刻只能...
0
点赞
评论
收藏
分享
2021-06-12 20:02
已编辑
北京大学 人工智能
持续精进,你需要了解Redis的这些拓展方案
前言 Redis大家都不陌生,就算是没用过,也都听说过了。 作为最广泛使用的KV内存数据库之一,在当今的大流量时代,单机模式略显单薄,免不了要有一些拓展的方案。 笔者下文会对各种方案进行介绍,并且给出场景,实现 等等概述,还会提到一些新手常见的误区。 正文 先从基础的拓展方式开始,这样更便于理解较高级的模式。 ps: 本文背景是以笔者落笔时官网最新稳定版5.0.8为准,虽然还没写完就变成了6.0.1。 分区 概述 分区(Partitioning)是一种最为简单的拓展方式。 在我们面临单机的存储空间瓶颈时,第一点就能想到像传统的关系型数据库一样,进行数据分区。 或者假设手中有N台机器可以作为R...
0
点赞
评论
收藏
分享
2021-06-12 20:01
北京大学 人工智能
微服务架构解密:关于构建大规模应用的介绍
微服务是什么? 微服务就是一些协同工作的小而自制的服务。 无论现在的影响力如何,分布式系统仍然是最容易被忽视的主题之一,至少在大学层面是如此。没有多少学生理解诸如容器化和容错等概念,你也永远不会看到系统项目赢得黑客马拉松。尽管如此,我认为至少对今天的大规模系统如何工作有一个简单的理解是非常重要的。 这个故事是针对初学者的系列中的第一个,例如接受 1 到 2 年级的普通计算机科学教育或者具有自学网络开发经验的人。前几篇文章将对主要概念进行重点介绍,并深入探讨技术细节。然后,我希望探索网络相关的主题、Kubernetes ,以及我在研究中看到的有趣内容。第一个非常简单,旨在解释微服务背后的动...
0
点赞
评论
收藏
分享
1
15
16
17
18
19
36
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务