面试题3

工具类

日历

1、Calendar Class的用途

2、如何在Java中获取日历类的实例

3、解释一些日历类中的重要方法

4、GregorianCalendar 类是什么

5、SimpleTimeZone 类是什么

6、Locale类是什么

7、如何格式化日期对象

8、如何添加小时(hour)到一个日期对象(Date Objects)

9、如何将字符串 YYYYMMDD 转换为日期

Math

1、Math.round()什么作用?Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

XML

1、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?DOM 和 SAX 解析器有什么不同?

2、Java解析XML的方式

3、用 jdom 解析 xml 文件时如何解决中文问题?如何解析

4、你在项目中用到了 XML 技术的哪些方面?如何实现

动态代理

1、描述动态代理的几种实现方式,分别说出相应的优缺点

设计模式

1、什么是设计模式(Design Patterns)?你用过哪种设计模式?用在什么场合

2、你知道哪些商业级设计模式?

3、哪些设计模式可以增加系统的可扩展性

单例模式

1、除了单例模式,你在生产环境中还用过什么设计模式?

2、写 Singleton 单例模式

3、单例模式的双检锁是什么

4、如何创建线程安全的 Singleton

5、什么是类的单例模式

6、写出三种单例模式实现

适配器模式

1、适配器模式是什么?什么时候使用

2、适配器模式和代理模式之前有什么不同

3、适配器模式和装饰器模式有什么区别

4、什么时候使用享元模式

5、什么时候使用组合模式

6、什么时候使用访问者模式

7、什么是模板方法模式

8、请给出1个符合开闭原则的设计模式的例子

开放问题

1、用一句话概括 Web 编程的特点

2、Google是如何在一秒内把搜索结果返回给用户

3、哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入

4、树(二叉或其他)形成许多普通数据结构的基础。请描述一些这样的数据结构以及何时可以使用它们

5、某一项功能如何设计

6、线上系统突然变得异常缓慢,你如何查找问题

7、什么样的项目不适合用框架

8、新浪微博是如何实现把微博推给订阅者

9、简要介绍下从浏览器输入 URL 开始到获取到请求界面之后 Java Web 应用中发生了什么

10、请你谈谈SSH整合

11、高并发下,如何做到安全的修改同一行数据

12、12306网站的订票系统如何实现,如何保证不会票不被超卖

13、网站性能优化如何优化的

14、聊了下曾经参与设计的服务器架构

15、请思考一个方案,实现分布式环境下的 countDownLatch

16、请思考一个方案,设计一个可以控制缓存总体大小的自动适应的本地缓存

17、在你的职业生涯中,算得上最困难的技术挑战是什么

18、如何写一篇设计文档,目录是什么

19、大写的O是什么?举几个例子

20、编程中自己都怎么考虑一些设计原则的,比如开闭原则,以及在工作中的应用

21、解释一下网络应用的模式及其特点

22、设计一个在线文档系统,文档可以被编辑,如何防止多人同时对同一份文档进行编辑更新

23、说出数据连接池的工作机制是什么

24、怎么获取一个文件中单词出现的最高频率

25、描述一下你最常用的编程风格

26、如果有机会重新设计你们的产品,你会怎么做

27、如何搭建一个高可用系统

28、如何启动时不需输入用户名与密码

29、如何在基于Java的Web项目中实现文件上传和下载

30、如何实现一个秒杀系统,保证只有几位用户能买到某件商品。

31、如何实现负载均衡,有哪些算法可以实现

32、如何设计一个购物车?想想淘宝的购物车如何实现的

33、如何设计一套高并发支付方案,架构如何设计

34、如何设计建立和保持 100w 的长连接

35、如何避免浏览器缓存。

36、如何防止缓存雪崩

37、如果AB两个系统互相依赖,如何解除依

38、如果有人恶意创建非法连接,怎么解决

39、如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能

40、如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)0e's

41、如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现

42、如果让你实现一个并发安全的链表,你会怎么做

43、应用服务器与WEB 服务器的区别?应用服务器怎么监控性能,各种方式的区别?你使用过的应用服务器优化技术有哪些

44、大型网站在架构上应当考虑哪些问题

45、有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的

46、最近看什么书,印象最深刻的是什么

47、描述下常用的重构技巧

48、你使用什么版本管理工具?分支(Branch)与标签(Tag)之间的区别在哪里

49、你有了解过存在哪些反模式(Anti-Patterns)吗

50、你用过的网站前端优化的技术有哪些

51、如何分析Thread dump

52、你如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念

53、你是如何处理内存泄露或者栈溢出问题的

54、你们线上应用的 JVM 参数有哪些

55、怎么提升系统的QPS和吞吐量

知识面

1、解释什么是 MESI 协议(缓存一致性)

2、谈谈 reactor 模型

3、Java 9 带来了怎样的新功能

4、Java 与 C++ 对比,C++ 或 Java 中的异常处理机制的简单原理和应用

5、简单讲讲 Tomcat 结构,以及其类加载器流程

6、虚拟内存是什么

7、阐述下 SOLID 原则

8、请简要讲一下你对测试驱动开发(TDD)的认识

9、CDN实现原理

10、Maven 和 ANT 有什么区别

11、UML中有哪些常用的图

Linux

1、Linux 下 IO 模型有几种,各自的含义是什么。

2、Linux 系统下你关注过哪些内核参数,说说你知道的

3、Linux 下用一行命令查看文件的最后五行

4、平时用到哪些 Linux 命令

5、用一行命令输出正在运行的 Java 进程

6、使用什么命令来确定是否有 Tomcat 实例运行在机器上

7、什么是 N+1 难题

8、什么是 paxos 算法

9、什么是 restful,讲讲你理解的 restful

10、什么是 zab 协议

11、什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别

12、什么是领域驱动开发(Domain Driven Development)

13、介绍一下了解的 Java 领域的 Web Service 框架

14、Web Server、Web Container 与 Application Server 的区别是什么

15、微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里

16、描述 Cookie 和 Session 的作用,区别和各自的应用范围,Session工作原理

17、你常用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具有哪些

18、简述下数据库正则化(Normalizations)

19、KISS,DRY,YAGNI 等原则是什么含义

20、分布式事务的原理,优缺点,如何使用分布式事务?

21、布式集群下如何做到唯一序列号

网络

1、HTTPS 的加密方式是什么,讲讲整个加密解密流程

2、HTTPS和HTTP的区别

3、HTTP连接池实现原理

4、HTTP集群方案

5、Nginx、lighttpd、Apache三大主流 Web服务器的区别

6、是否看过框架的一些代码

7、持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些

8、数值提升是什么

9、你能解释一下里氏替换原则吗

10、你是如何测试一个应用的?知道哪些测试框架

11、传输层常见编程协议有哪些?并说出各自的特点

编程题

计算加班费

加班10小时以下加班费是时薪的1.5倍。加班10小时或以上,按4元/时算。提示:(一个月工作26天,一天正常工作8小时)

1、计算1000月薪,加班9小时的加班费

2、计算2500月薪,加班11小时的加班费

3、计算1000月薪,加班15小时的加班费

卖东西

一家商场有红苹果和青苹果出售。(红苹果5元/个,青苹果4元/个)。

1、模拟一个进货。红苹果跟青苹果各进200个。

2、模拟一个出售。红苹果跟青苹果各买出10个。每卖出一个苹果需要进行统计。

提示:一个苹果是一个单独的实体。

日期提取

有这样一个时间字符串:2008-8-8 20:08:08 , 请编写能够匹配它的正则表达式,并编写Java代码将日期后面的时分秒提取出来,即:20:08:08

线程

1、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

2、用Java写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出

3、wait-notify 写一段代码来解决生产者-消费者问题

数字

1、判断101-200之间有多少个素数,并输出所有素数

2、用最有效率的方法算出2乘以17等于多少

3、有 1 亿个数字,其中有 2 个是重复的,快速找到它,时间和空间要最优

4、2 亿个随机生成的无序整数,找出中间大小的值

5、10 亿个数字里里面找最小的 10 个

6、1到1亿的自然数,求所有数的拆分后的数字之和,如286 拆分成2、8、6,如1到11拆分后的数字之和 => 1 + ... + 9 + 1 + 0 + 1 + 1
7、一个数如果恰好等于它的因子之和,这个数就称为 “完数“。例如6=1+2+3.编程   找出1000以内的所有完数

8、一个数组中所有的元素都出现了三次,只有一个元素出现了一次找到这个元素

9、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

10、求100-1000内质数的和

11、求1到100的和的平均数

12、求s=a+a+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 求出1到100的和

13、算出1到40的质数,放进数组里

① 显示放组里的数
② 找出第[5]个数
③ 删除第[9]个数,再显示删除后的第[9]个
14、有 3n+1 个数字,其中 3n 个中是重复的,只有 1 个是不重复的,怎么找出来。

15、有一组数1.1.2.3.5.8.13.21.34。写出程序随便输入一个数就能给出和前一组数字同规律的头5个数

16、计算指定数字的阶乘

17、开发 Fizz Buzz

18、给定一个包含 N 个整数的数组,找出丢失的整数

19、一个排好序的数组,找出两数之和为m的所有组合

20、将一个正整数分解质因数。例如:输入90,打印出90=233*5。

21、打印出所有的 “水仙花数 “,所谓 “水仙花数 “是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 “水仙花数 “,因为153=1的三次方+5的三次方+3的三次方

22、原地交换两个变量的值

23、找出4字节整数的中位数

24、找到整数的平方根

25、实现斐波那契

网络

1、用Java Socket编程,读服务器几个字符,再写入本地显示

反射

1、反射机制提供了什么功能?

2、反射是如何实现的

3、哪里用到反射机制

4、反射中 Class.forName 和 ClassLoader 区别

5、反射创建类实例的三种方式是什么

6、如何通过反射调用对象的方法

7、如何通过反射获取和设置对象私有字段的值

8、反射机制的优缺点

数据库

1、写一段 JDBC 连Oracle的程序,并实现数据查询

算法

1、50个人围坐一圈,当数到三或者三的倍数出圈,问剩下的人是谁,原来的位置是多少

2、实现一个电梯模拟器用

3、写一个冒泡排序

4、写一个折半查找

5、随机产生20个不能重复的字符并排序

6、写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组

7、写一段代码在遍历 ArrayList 时移除一个元素

8、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

9、约瑟芬环游戏

正则

1、请编写一段匹配IP地址的正则表达式

2、写出一个正则表达式来判断一个字符串是否是一个数字

字符串

1、写一个方法,入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

2、写一个程序找出所有字符串的组合,并检查它们是否是回文串

3、写一个字符串反转函数,输入abcde转换成edcba代码

4、小游戏,倒转句子中的单词

5、将GB2312编码的字符串转换为ISO-8859-1编码的字符串

6、请写一段代码来计算给定文本内字符“A”的个数。分别用迭代和递归两种方式

7、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”,应该截为“我AB”,输入“我ABC汉DEF”,应该输出为“我ABC”,而不是“我ABC+汉的半个”

8、给定 2 个包含单词列表(每行一个)的文件,编程列出交集

9、打印出一个字符串的所有排列

10、将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七)

11、在Web应用开发过程中经常遇到输出某种编码的字符,如从 GBK 到 ISO8859-1等,如何输出一个某种编码的字符串

日期

1、计算两个日期之间的差距

本人两年开发经验、18 年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、滴滴等公司 offer,岗位是 Java 后端开发,最终选择去了阿里巴巴。

面试了很多家公司,感觉大部分公司考察的点都差不多,所以将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助。另外,目前在阿里也做面试官的工作,身份从求职者变为面试官,看问题的很多角度也不一样,所以下文中既有求职者的视角,也有面试官的视角

更多文章见个人博客:https://github.com/farmerjohngit/myblog

面试流程

先说下面试流程,一般大公司都有 3-4 轮技术面,1 轮的 HR 面。就阿里而言,我共经历了 4 轮技术面,前两轮主要是问基础和项目实现,第 3 轮是交叉面,两个面试官,主要是问项目实现和拓展。第 4 轮是部门老大面,主要就问一些架构、技术和业务的理解、个人发展比较抽象的东西了。

HR 面主要就是跟你聊聊天,看看你的个人稳定性、价值观、主动性之类的,一般 HR 是不会挂人的,但很多人在 HR 面后挂了,原因其实不是你在 HR 面的表现不好(少数情况除外),而是你之前几面的表现一般,比 60 分要高一点(所以没在前面的面试直接挂了你),但是又没达到 80 分,这个时候公司基于 hc、人才配比、与其他候选人的对比等多个维度考虑,最终决定是否给你 offer。

另外要特别说下的是,今日头条对算法的考察会比较多,我面了 4 轮技术,每一轮都会问 1 到 2 个算法题,大概是 leetcode 上 easy 和 medium 难度。所以想去头条的同学最好先去 leetcode 上刷刷题。

要注意的点

  • 简历一到两页为最佳,将项目经历写 2-3 个左右就差不多了,一定要写最有亮点的项目
  • 工作经历的起始时间要写清楚,另外大公司都有背调,不要合并或省略一些比较短的工作经历,影响的可能不只是这次面试,而是之后可能都无法进这家公司
  • 博客没什么好文章,github 没好项目就不要写在简历中了
  • 对于面试官的问题,想清楚再回答,如果觉得需要的时间可能比较长,可以跟面试官说我思考下、我整理下思路之类的
  • 遇到不会的问题直接说不会,不要不懂装懂
  • 遇到比较确定的问题,要有自信一点,有时候面试官可能会故意用怀疑的语气来考察你
  • 面试的过程中注意语速和吐字,本人在做面试官后,发现很多人说话语速很快,或吐字不清,导致原本会的问题也会让面试官觉得你没答到点上(尤其是电话面)
  • 面试过程中可以自信但不要与面试官争执
  • 面试完后不要直接问面试结果
  • 面试保持自信而不自大,曾经问一位候选人说对 hashmap 是了如指掌,结果问到 hashmap 扩容时需不需要重新计算 hash 就懵逼了。对于很多人来说,面试官总有办法把你问倒的。
  • 每次面试后都总结有哪些答的不好的地方,有哪些知识点的盲区,解决掉。
  • 被问到为什么想跳槽的时候,因该从自身发展等角度出发,而不是吐槽前公司

另外,在求职的过程中也碰到过少数没有素质的面试官,比如一上来就一副很不屑的语气,话没说两句开始 diss 你的项目,给人的体验很不好。所以也请各位面试官或将来要做面试官的同学,能在面试的过程中保持基本的礼貌和尊重,就像在阿里常说的:你面试别人的时候,别人也在面试着你

最重要的一点,不要因为几次的面试失败就开始怀疑自己,永远记住,面试的结果=实力+运气。有时候你擅长的东西可能面试官根本不会,所以他也不可能花很多时间去问他不懂的东西;有时候可能他问你的你都会,但是可能因为对方提问方式、语气等原因,答的就是不顺畅。

接下来说技术相关的考察。

总的来说,技术相关的考察主要分为两大块,一是基础,二是经验。

基础包括 java 基础、数据库、中间件等,来自于日常的积累和面试前的准备。

经验包括以往做过的项目、解决的问题、以及一些场景题(比如你的项目如果流量大了十倍如何保证可用)。

本文主要说基础,下篇文章将说经验。

基础

以下都是我认为面试中经常会被考察到的知识点的整理,不够完整,但大部分都是常见面试题。

java 基础

集合

集合分为两大块:java.util 包下的非线程安全集合和 java.util.concurrent 下的线程安全集合。

List

ArrayList 与 LinkedList 的实现和区别

Map

HashMap:了解其数据结构、hash 冲突如何解决(链表和红黑树)、扩容时机、扩容时避免 rehash 的优化

LinkedHashMap:了解基本原理、哪两种有序、如何用它实现 LRU

TreeMap:了解数据结构、了解其 key 对象为什么必须要实现 Compare 接口、如何用它实现一致性哈希

Set

Set 基本上都是由对应的 map 实现,简单看看就好

常见问题

  • hashmap 如何解决 hash 冲突,为什么 hashmap 中的链表需要转成红黑树?
  • hashmap 什么时候会触发扩容?
  • jdk1.8 之前并发操作 hashmap 时为什么会有死循环的问题?
  • hashmap 扩容时每个 entry 需要再计算一次 hash 吗?
  • hashmap 的数组长度为什么要保证是 2 的幂?
  • 如何用 LinkedHashMap 实现 LRU ?
  • 如何用 TreeMap 实现一致性 hash ?

线程安全的集合

Collections.synchronized

了解其实现原理

CopyOnWriteArrayList

了解写时复制机制、了解其适用场景、思考为什么没有 ConcurrentArrayList

ConcurrentHashMap

了解实现原理、扩容时做的优化、与 HashTable 对比。

BlockingQueue

了解 LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue、SynchronousQueue

常见问题

  • ConcurrentHashMap 是如何在保证并发安全的同时提高性能?
  • ConcurrentHashMap 是如何让多线程同时参与扩容?
  • LinkedBlockingQueue、DelayQueue 是如何实现的?
  • CopyOnWriteArrayList 是如何保证线程安全的?

并发

synchronized

了解偏向锁、轻量级锁、重量级锁的概念以及升级机制、以及和 ReentrantLock 的区别

CAS

了解 AtomicInteger 实现原理、CAS 适用场景、如何实现乐观锁

AQS

了解 AQS 内部实现、及依靠 AQS 的同步类比如 ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier 等的实现

ThreadLocal

了解 ThreadLocal 使用场景和内部实现

ThreadPoolExecutor

了解线程池的工作原理以及几个重要参数的设置

常见问题

  • synchronized 与 ReentrantLock 的区别?
  • 乐观锁和悲观锁的区别?
  • 如何实现一个乐观锁?
  • AQS 是如何唤醒下一个线程的?
  • ReentrantLock 如何实现公平和非公平锁是如何实现?
  • CountDownLatch 和 CyclicBarrier 的区别?各自适用于什么场景?
  • 适用 ThreadLocal 时要注意什么?比如说内存泄漏?
  • 说一说往线程池里提交一个任务会发生什么?
  • 线程池的几个参数如何设置?
  • 线程池的非核心线程什么时候会被释放?
  • 如何排查死锁?

推荐文章:

死磕 Synchronized 底层实现--概论(比较深入)

引用

了解 Java 中的软引用、弱引用、虚引用的适用场景以及释放机制

常见问题

  • 软引用什么时候会被释放
  • 弱引用什么时候会被释放

推荐文章:

Java 引用类型原理剖析(比较深入)

类加载

了解双亲委派机制

常见问题

  • 双亲委派机制的作用?
  • Tomcat 的 classloader 结构
  • 如何自己实现一个 classloader 打破双亲委派

IO

了解 BIO 和 NIO 的区别、了解多路复用机制

常见问题

  • 同步阻塞、同步非阻塞、异步的区别?
  • select、poll、eopll 的区别?
  • java NIO 与 BIO 的区别?
  • refactor 线程模型是什么?

JVM

GC

垃圾回收基本原理、几种常见的垃圾回收器的特性、重点了解 CMS (或 G1 )以及一些重要的参数

内存区域

能说清 jvm 的内存划分

常见问题

  • CMS GC 回收分为哪几个阶段?分别做了什么事情?
  • CMS 有哪些重要参数?
  • Concurrent Model Failure 和 ParNew promotion failed 什么情况下会发生?
  • CMS 的优缺点?
  • 有做过哪些 GC 调优?
  • 为什么要划分成年轻代和老年代?
  • 年轻代为什么被划分成 eden、survivor 区域?
  • 年轻代为什么采用的是复制算法?
  • 老年代为什么采用的是标记清除、标记整理算法
  • 什么情况下使用堆外内存?要注意些什么?
  • 堆外内存如何被回收?
  • jvm 内存区域划分是怎样的?

推荐文章:JVM 垃圾回收历险

中间件、存储、以及其他框架

Spring

bean 的生命周期、循环依赖问题、spring cloud (如项目中有用过)、AOP 的实现、spring 事务传播

常见问题

  • java 动态代理和 cglib 动态代理的区别(经常结合 spring 一起问所以就放这里了)
  • spring 中 bean 的生命周期是怎样的?
  • 属性注入和构造器注入哪种会有循环依赖的问题?

Dubbo (或其他 Rpc 框架)

了解一个常用 RPC 框架如 Dubbo 的实现:服务发现、路由、异步调用、限流降级、失败重试

常见问题

  • Dubbo 如何做负载均衡?
  • Dubbo 如何做限流降级?
  • Dubbo 如何优雅的下线服务?
  • Dubbo 如何实现异步调用的?

RocketMq (或其他消息中间件)

了解一个常用消息中间件如 RocketMq 的实现:如何保证高可用和高吞吐、消息顺序、重复消费、事务消息、延迟消息、死信队列

常见问题

  • RocketMq 如何保证高可用的?
  • RocketMq 如何保证高吞吐的?
  • RocketMq 的消息是有序的吗?
  • RocketMq 的消息局部顺序是如何保证的?
  • RocketMq 事务消息的实现机制?
  • RocketMq 会有重复消费的问题吗?如何解决?
  • RocketMq 支持什么级别的延迟消息?如何实现的?
  • RocketMq 是推模型还是拉模型?
  • Consumer 的负载均衡是怎么样的?

Redis (或其他缓存系统)

redis 工作模型、redis 持久化、redis 过期淘汰机制、redis 分布式集群的常见形式、分布式锁、缓存击穿、缓存雪崩、缓存一致性问题

推荐书籍:《Redis 设计与实现》

推荐文章:

https://github.com/farmerjohngit/myblog/issues/1

https://github.com/farmerjohngit/myblog/issues/2

https://github.com/farmerjohngit/myblog/issues/5

常见问题

  • redis 性能为什么高?
  • 单线程的 redis 如何利用多核 cpu 机器?
  • redis 的缓存淘汰策略?
  • redis 如何持久化数据?
  • redis 有哪几种数据结构?
  • redis 集群有哪几种形式?
  • 有海量 key 和 value 都比较小的数据,在 redis 中如何存储才更省内存?
  • 如何保证 redis 和 DB 中的数据一致性?
  • 如何解决缓存穿透和缓存雪崩?
  • 如何用 redis 实现分布式锁?

Mysql

事务隔离级别、锁、索引的数据结构、聚簇索引和非聚簇索引、最左匹配原则、查询优化( explain 等命令)

推荐文章: http://hedengcheng.com/?p=771

https://tech.meituan.com/2014/06/30/mysql-index.html

http://hbasefly.com/2017/08/19/mysql-transaction/

常见问题

  • Mysql(innondb 下同) 有哪几种事务隔离级别?
  • 不同事务隔离级别分别会加哪些锁?
  • mysql 的行锁、表锁、间隙锁、意向锁分别是做什么的?
  • 说说什么是最左匹配?
  • 如何优化慢查询?
  • mysql 索引为什么用的是 b+ tree 而不是 b tree、红黑树
  • 分库分表如何选择分表键
  • 分库分表的情况下,查询时一般是如何做排序的?

zk

zk 大致原理(可以了解下原理相近的 Raft 算法)、zk 实现分布式锁、zk 做集群 master 选举

常见问题

  • 如何用 zk 实现分布式锁,与 redis 分布式锁有和优缺点

HBase (如简历有写)

HBase 适用的场景、架构、merge 和 split、查写数据的流程。

推荐文章: http://hbasefly.com/2017/07/26/transaction-2/ 及该博客下相关文章

Storm (如简历有写)

Storm 与 Map Reduce、Spark、Flink 的比较。Storm 高可用、消息 ack 机制

算法

算法的话不是所有公司都会问,但最好还是准备下,主要是靠刷题,在 leetcode 上刷个 100-200 道 easy 和 medium 的题,然后对应公司的面经多看看,问题应该不大。

招聘

我所在的部门是阿里巴巴菜鸟网络下的国际事业部,主要是为速卖通、天猫海外、lazada 等跨境电商提供国际物流解决方案。国际化是阿里巴巴集团未来三年五年的战略目标之一,目前业务也是高速发展的阶段,集团这几年也是往菜鸟这边在大量投入人才和资源。另外,菜鸟 p6 就有期权(集团是 p7 )。

邮箱: farmercoding@163.com

招聘岗位:Java 开发,base 杭州

要求:

  1. 计算机相关专业本科及以上学历,三年以上软件开发经验;
  2. Java 基础扎实,熟悉 JVM 原理、Java 高级特性、Java 网络编程、Java 多线程编程;
  3. 熟悉 Java 主流开源框架,如 Spring、Dubbo、Netty 等,掌握底层原理和机制;
  4. 熟悉 MySql、MyBatis 等数据库相关技术,对 SQL 性能优化有经验;
  5. 了解分布式系统原理:CAP、最终一致性、幂等操作、分布式事务等;
  6. 了解大型网络应用架构:MQ、缓存、负载均衡、集群技术、数据同步、高可用、可容灾等;
  7. 良好的团队合作精神和沟通能力,能主动寻求挑战、采取行动、达成目标;
  8. 持续学习,追求卓越,能为团队引入创新的技术和方案,用创新的思路解决问题

基础篇

String为什么要设计成Final

String StringBuffer StringBulider的区别

你能给我写一个final对象吗

重写hashcode()方法

java 序列化

你能给我写个单例模式吗?你这个如果要是被反射或者序列化破坏单例该怎么办?

Java io流体系结构

BIO、NIO和AIO的区别

HashMap的实现原理

HashMap产生冲突了会怎么样

HashMap在多线程下会出现什么问题,为什么会这样

HashMap为什么要采用红黑树,你能给我讲讲红黑树的特点吗

ConcurrentHashMap的实现原理

ConcurrentHashMap JDK1.7和1.8有什么区别

ConcurrenthashMap用到了哪些锁

ArrayList和LinkedList的区别,分别在什么场景下使用

ArrayList的扩容

Vector为什么是线程安全的

TreeSet的底层实现

一些Collection的方法

Java反射的原理

Servlet,filter

interface里面接口用什么进行修饰

为什么要先加载父类构造器,如果父类构造器没有无参构造器会怎么办

接口和抽象类的区别

idea 快捷键

git操作

maven生命周期,install和deploy的区别

并发篇

sychronizated 底层实现

自旋锁,偏向锁,轻量级锁,重量级锁的介绍以及升级过程

volatile 底层实现

CAS乐观锁的原理

ASQ 的原理

CountDownLanch 和 CyclicBarrier 的区别和用法

线程池的使用和相关参数

线程池的拒绝策略

FixedThreadPool SingleThreadPool CacheThreadPool 一些细节,比如说用了什么队列,空闲线程的等待时间等等。

sleep和wait的区别

notify和notifyAll的区别

如何实现线程按顺序执行

为什么wait, notify, notifyAll方法定义在Object里

你是怎样理解线程安全的

sychronizated使用在方法上和sychronizated(xxx.class)和sychroizated(this)有什么区别

ThreadLocal用过吗,给我介绍下他的使用场景

Lock和Sychronizated的区别

Callable和Future了解过吗?

为什么说ConcurrentHashMap是弱一致性的?以及为何多个线程并发修改ConcurrentHashMap时不会报ConcurrentModificationException?

线程运行的状态以及如何他们之间是怎么切换的

底层篇

JVM 内存模型

JVM 垃圾回收算法

JVM 垃圾回收器

JVM major gc 和 full gc 的触发时机

CMS的过程为什么要标记两次

new一个对象会放在哪里

JVM 调整的一些参数

怎么判定一个对象的内存可以被回收了

哪些对象可以作为CGRoots

什么情况下会发生内存泄露

强引用,软引用,弱引用,虚引用

可达性分析算法

类加载

双亲委派模型及为什么要用双亲委派模型

类加载器与类的”相同“判断

类加载器种类

类加载过程

自定义类加载器

反射用过么,私有成员变量和私有方法能被反射出来吗

怎样获取一个类的私有方法和私有变量

Spring篇

SpringIOC初始化过程

BeanFactory和ApplicationContext的区别

Spring Bean的初始化

Spring AOP的实现原理

JDK 和CGLIB的区别

Spring 和SpringBoot的区别

Spring事务传播机制

SpringMvc的请求过程

SpringMvc用到的设计模式

你用过的一些Spring注解

如何让Spring bean按顺序初始化

数据库

数据库隔离级别, 会出现什么问题

数据库索引用过吗?是怎么实现的

索引的最左匹配原则

三大范式

数据库的锁,你能给我介绍下吗

聚簇索引和非聚簇索引

为什么索引要用b+树而不是红黑树,hash表

你都是怎么优化数据库的

Repeateable-read是怎么解决不可重复读的?幻读是怎么解决的

数据库的三级封锁协议

innodb 和 myisam 区别

计算机网络

TCP的三次握手和四次握手

TCP/IP协议 五层协议的对象头的变化

GET和POST的区别

当你输入一个网址/点击一个链接,发生了什么?

拥塞控制

UDP和TCP区别

cookie和session区别

HTTP HTTPS的区别

操作系统

进程通信方式

线程进程区别

进程通信方式;

死锁(代码实现);

常用linux命令;

作业调度方式;

LRU算法实现

其他

maven生命周期

常用的idea快捷键

jsp内置对象

http状态码

http内容

手撕算法

十道海量数据处理面试题与十个方法大总结

一些比较好的博客推荐给大家

大佬1

大佬2

大佬

作者:蒙牛真好
来源:CSDN
原文:https://blog.csdn.net/nullbull/article/details/82049373
版权声明:本文为博主原创文章,转载请附上博文链接!

什么是分布式系统?

分布式系统是建立在网络上的软件系统,正是因为软件的特性,所以分布式系统具有内聚性和透明性;
在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像一个系统似的.并且在这样一个分布式系统中一般都会设立一个主节点作为客户端接口(告诉客户端到集群中哪台主机中存储与获取数据),现代化的分布式系统还应部署为高可用的(HA)架构;
主要是解决互联网下大数据时代数据的存储和计算等问题.
什么是高可用(HA)架构?

高可用架构应具备但不限于以下特征:
1.主从切换
当主节点宕机后,从节点能够快速切换状态为主节点,并在原主节点回复后,快速切换回备用节点状态.
2.负载均衡
当服务的请求量比较高时,一台服务器无法满足需求,这时候需要多台机器提供相同的服务,将请求均衡的分发到不同机器上,从而减轻个别机器的负担.
甚至还能根据集群部署的不同数据节点的远近情况,网络情况和主机的配置情况来分发任务,从而提高客户端的相应速度和个别服务端的压力.
3.易于横向扩张
当用户量急剧增加,已有的服务无法承载更多的用户时,便需要对服务进行扩展.在Hadoop集群中数据节点之间通过管线来实现数据的快速传输.
你知道什么高可用方式吗?

Hadoop集群通过Zookeeper架构来实现高可用,该架构主要利用心跳证明服务来确认主节点与数据节点的情况,是否发生宕机,若是长时间无法访问,考虑到可能是点与点之间的网络拥塞导致,因此他还会通过其他节点在测试,确保机器是否真实宕机,若主节点发生宕机,需要切换备用节点,若是数据节点宕机,则需要根据集群的数据冗余度来调制数据块部署.
如何实现高可用?

高可用的实现可以通过部署多一台服务器作为备用主节点,当主节点宕机时,备用主节点快速继任(standby->active).
若是备用节点也宕机(概率非常低),则需要声明一台服务器,实现冷启动(对于一个大型并拥有大量文件和数据块的集群,冷启动需要花费大约30分钟)来顶替.
什么是冷启动?

Hadoop分布式系统的冷启动表示重启HDSF系统,主节点(NameNode)在该期间执行如下操作:
1.从fsimage中加载元数据到内存中(因此没有DataNode的信息,导致它认为所有的block都已丢失)
2.进入安全模式(SafeMode)
3.数据节点(DataNode)启动后,会定期向主节点汇报自身所持的blockID信息
4.随着数据节点陆续启动并汇报信息,主节点将内存元数据中的block所在DataNode信息更新补全
5.主节点找到所有block 的位置,从而自动退出安全模式.
你知道有哪些常用的负载均衡方式?

DNS负载均衡 DNS是提供域名解析服务的,在我们访问网站的时候,首先需要DNS服务器将域名映射到IP,而这种映射关系是一对多的,这时候DNS服务器就实现了负载均衡;
网络层负载均衡 通过对IP层数据包的IP地址和端口号的修改,达到负载均衡的效果.在负载均衡服务器收到客户端的IP包时,通过修改IP包的目的IP地址和端口,然后原封不动的投递到内部网络中,数据包流入实际服务器.实际服务器处理完后,又会将数据包投递回负载均衡服务器,再修改目标IP地址为用户IP地址;
反向代理负载均衡 属于应用层的负载均衡,其作为应用服务器的上层,会设置内外两个网卡,对外接收并响应客户端请求,对内将客户端请求转发给应用服务器并接收应用服务器的返回.典型的反向代理负载均衡有Nginx+keepalived(实现高可用), Hadoop中Zookeeper即可实现负载均衡.

作者:Fushicho_XF
来源:CSDN
原文:https://blog.csdn.net/weixin_41156591/article/details/88324809
版权声明:本文为博主原创文章,转载请附上博文链接!

面试题2. Java的Object类中有哪些方法,各自的用途?

clone()方法是用来进行拷贝一个对象的,他使用的是一种浅拷贝的方式。
finalize() 方法是Object对象的protected修饰的方法,当虚拟机在进行回收一个对象之前的时候,会去调用该对象的finalize()方法,这个方法只能是被动的被调用,就算是我们主动去调用该方法去回收一个对象,也不会起到作用的,因为他是有虚拟机自己去决定的。

面试题3. 深拷贝和浅拷贝的区别,怎么实现深拷贝?

他们的区别就是:

当如果要拷贝一个A对象,而A对象中又有一个B对象,那么如果对A拷贝的时候,重新拷贝出来一个A1对象并且重新分配内存地址,但是对于A中的B对象,仅仅只是把A1中拷贝出来的B1对象的引用指向原来的B对象而已,并没有把拷贝的B1对象也重新进行分配一个新的内存地址。这就是浅拷贝。
而深拷贝就是在第1的基础上,不仅重新给A1对象分配了新的内存地址,而且还给A1中的B1也重新进行分配了新的内存地址,而不只是仅仅把原本的B的引用给B1。这就是深拷贝。

这里借用一张书中的图片:
在这里插入图片描述

那么如果实现深拷贝呢?

如果想要深拷贝一个对象,这个对象必须要实现 Cloneable 接口,实现 重写clone()方法,并且在 clone 方法内部,把该对象引用的其他对象也要 clone 一份,这就要求这个被引用的对象必须也要实现
Cloneable 接口并且实现 clone 方法

面试题4. Final, finally, finalize的区别?

final:他是用来进行修饰方法、类、以及属性变量的,如果修饰的是方法的话,表示方法不能够被覆盖,如果修饰的是类的话,就表示该类不能够被继承,如果修饰的是属性变量的话,就表示该属性变量不能够被修改。
finally:他一般用来进行try 。。catch语句之后,主要是为了进行释放一些连接资源,无论怎么finally中的代码都会被执行。
finalize:这个方法是Object对象的protected修饰的方法,当虚拟机在进行回收一个对象之前的时候,会去调用该对象的finalize()方法,这个方法只能是被动的被调用,就算是我们主动去调用该方法去回收一个对象,也不会起到作用的,因为他是有虚拟机自己去决定的。

面试题5. 讲一讲泛型,有没有在jdk源码层面研究过泛型

其实泛型的本质目的就是为了参数化类型,但是泛型的底层其实是经过了一个泛型擦除的过程,只在代码编译阶段才会起到作用,而在进入JVM之前,与泛型有关的信息就会被擦除,这个过程就叫做泛型擦除。

泛型不仅可以对一个对象进行使用泛型,还可以是接口、方法
那就说说泛型擦除吧,他其实在JVM中还是那个类,不会因为你加了泛型,就把泛型和加泛型的类、方法、接口绑定一起,但是在利用反射的时候,其实只能获取到原本的类、方法、接口,根本就没有泛型这一说(在进入JVM中之后),List l1 = new ArrayList() 和 List l2 = new ArrayList(),其实l1和l2通过泛型得到的字节码都是一样的没有什么区别。这里就使用了泛型擦除
但是泛型擦除也有例外的情况,比如说你在定义一个类的时候,你给这个类(定义的类)加了一个泛型上界public Class Teacher ,那么此时通过反射得到Teacher 这个定义类类型其实就是Teacher 类型,如果么没有加这个泛型上界的话,就还是Object类型。

面试题6. .说一说java的异常体系, java是如何处理异常的?

在这里插入图片描述

用上面一张图进行描述一下Java的异常体系的两大类:

第一种是我们开发人员会经常遇到的Throwable的子类Exception中的异常。并且这种异常一般是运行时异常和IO异常,表示程序还能够克服和恢复的问题,运行时异常就是我们开发中实际会经常遇到的一些,比如java.lang.NullPointerException、java.lang.ClassNotFoundException、java.lang.IndexOutOfBoundsException,这种异常可以使用try catch进行捕获异常就可以了,当然我们还可以提前用throws把有可能发生的异常给声明出来,或者在进行局部可能会出现的异常进行throw出去(这个只能单独抛出一种异常的实例)
第二种是由于虚拟机自身的一些错误导致的error异常,也是Throwable中子类的异常。这种异常表示应用程序本身无法克服和恢复的一种严重问题。,这种异常我们开发人员一般很难遇到。

面试题7. Public、private、protected

public的访问权限:当前类,子类,当前类所在的包下,以及其他包下都可以进行访问。
protected的访问权限:除了当前类所在的包下、以及子类都可以访问,其他的包下都不能进行访问。(可以用肥水不流外人田记忆,哈哈)
默认的话:只能当前类和当前类所在的包下可以访问,当前类的子类和其他包下都不能进行访问。
private的访问权限:只有当前类可以访问(你可以理解成,加了private的话,这个人的钱就只能他自己知道他有多少钱,别人都不知道)
访问的权限依次是递减的。

面试题8. 成员变量、局部变量是否可以不初始化?

成员变量可以不用初始化:原因如下

原因是因为成员变量是属于实例对象的一部分,而且所有的实例对象都是分配在堆内存中,在虚拟机中分配好存储空间的时候,此时就会把实例对象的内存空间的成员变量都初始化为0,在类对象的加载过程中有五步,加载–>验证—>准备(static在这进行隐式初始化为0的)–>解析–>初始化,所以说成员变量就算你没有进行手动初始化也是有值的(为0或者为NULL)

局部变量必须进行初始化:原因如下

首先你得知道局部变量是位于方法中,而每一个方法在JVM执行过程中都是放在运行时数据区的栈贞中,而每一个栈贞中都存放着局部变量表、操作数栈、方法出口、动态链接等。因为局部变量表所需的内存空间是在编译期间就完成固定分配的,所以当调用方法前(也就是进入栈贞之前),就必须确定这个方法栈贞需要分配多大的变量空间,在方法运行期间就不会改变局部变量表的大小了,所以就说明了局部变量在创建时就必须进行初始化以确定分配内存大小。

面试题9. String,StringBuffer和StringBuilder的区别?

区别:

线程安全方面:String和StringBuilder都是线程不安全的,但是StringBuffer是线程安全的。
String是字符串常量,而StringBuffer和StringBuilder都是字符串变量,说白了就是,当String字符串对象一旦创建成功,就不会改变,但是StringBuffer和StringBuilder是可以修改的
在执行效率上:或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer(他是synchronized进行修饰的) > String(因为每一次创建的String对象都是不可以变的)

面试题10. 接口和抽象类区别?,接口除了抽象方法还有什么方法?

不同之处:

抽象类:

抽象类中可以定义构造器
可以有抽象方法和具体方法
接口中的成员全都是 public 的
抽象类中可以定义成员变量
有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法
抽象类中可以包含静态方法
一个类只能继承一个抽象类

接口:

接口中不能定义构造器
方法全部都是抽象方法
抽象类中的成员可以是 private、默认、protected、public
接口中定义的成员变量实际上都是常量
接口中不能有静态方法
一个类可以实现多个接口

相同之处:

不能够实例化
可以将抽象类和接口类型作为引用类型
一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要
被声明为抽象类

面试题11. 什么 是内存泄漏和内存溢出,有什么解决办法?

内存泄漏:其实就是当我们在创建对象或者是变量之后,并且该对象或者变量在程序中都不再使用了,但是又没有办法回收这些没用的对象和变量。而且还一直占用着系统的内存空间,此时的现象就是内存泄漏。

解决办法:

我们在使用静态变量的时候尽量减少对静态变量的使用,因为静态变量是存储在方法区(也就是永久代),不会被回收
如果在程序中有不用的对象,应该及时进行释放。

内存溢出:其实就是当我要申请一块内存的时候,但是此时虚拟机不能够给我提供这么大的内存,就说明内存溢出了,比如出现OutOfMemoryError,StackOverflowError 这种错误信息的时候

解决办法:

修改 JVM 启动参数, 直接增加内存。 (-Xms, -Xmx 参数一定不要忘记加。一般要将-Xms 和-Xmx 选项设置为相同, 以避免在每次 GC 后调整堆的大小; 建议堆的最大值设置为可用内存的最大值的 80%)。
根据日志进行分析哪里的问题所在,进行排查。

面试题12. java中final 和static的区别?

先说一下static:分为静态方法、静态变量、静态块:所以静态代码块=静态变量>静态方法(因为静态方法是只有调用的时候才会去执行,否则不去执行)

如果一个类还没有被加载的时候:

会先去加载父类的静态变量和静态代码块(并且静态变量和静态代码块的加载顺序和他们在代码中出现的位置有关)
然后再去加载该类的静态代码块和静态变量的初始化
之后再去加载父类的实例变量的初始化
然后去执行父类的构造函数
再去加载该类的实例变量的初始化
然后去执行该类的构造函数

关于final的用法:

如果当final加在类上,那么这个类就不能再被继承
如果当final加在方法上,那么这个方法就不能被重写。
如果当final加在成员变量或者是局部变量上,那么这个变量的值就不能被修改。(补充:如果加在成员变量上,并且成员变量是一个对象,比如是一个Person对象,其实还是可以继续往Person对象中加一些其他的属性的,但是不能修改这个对象的引用而已,但是对象的内容还是可以改变的)
final还可以加在方法的参数上,比如加在内部类的参数时就必须使用final关键字进行修饰(在JDK1.8之前都是必须的,但是在JDK1.8之后就可以不加了),因为内部类会持有外部类引用和方法中参数的引用,反编译class文件后,内部类的class文件的构造函数参数 中会显示传入 外部类对象(必然会加)以及方法内局部变量和形参(如果内部类有调用会加),不管是基本数据类型还是引用变量,如果重新赋值了,会导致内外指向的对象不一致,所以java就暴力的规定使用final,不能重新赋值。

面试题13. jdk动态代理,静态代理讲讲?

静态代理:

其实静态代理的最终目的就是为了扩展原本的对象方法的功能,通过代理对象类在去保证真实对象功能的前提下,再此基础上去扩展一些新的功能或者说是去增加一些繁琐且必须要去做的事情
但是如果当我们的业务接口过多的话,我们的代理对象也会变的很多,而且代理对象和真实对象都必须要实现同一个真正干活的业务接口。这也是他的缺点

jdk的动态代理:

而其实动态代理就是为了解决上一个静态代理的缺点,他可以不用代理对象和真是对象都去同时实现同一个业务接口。
而动态的代理的核心就是实现InvocationHandler 接口类重写invoke方法Object invoke(Object proxy, Method method, Object[] args) :在代理实例上处理方法调用并返回结果。 和public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler h) 这两个核心方法。
还有一点核心的就是使用ava.lang.reflect.Proxy类,他提供用于创建动态代理类和实例的静态方法,它还是由这些方法创建的所有动态代理类的超类Object invoke(Object proxy, Method method, Object[] args)。Ojbect proxy:表示需要代理的对象,Method method:表示要操作的方法, Object[] args:method方法所需要传入的参数(可能没有为,null.也可能有多个)

代理对象的核心实现:

class ServiceProxy implements InvocationHandler {

private Object target=null;//保存真实业务对象
/**
 * 返回动态代理类的对象,这样用户才可以利用代理类对象去操作真实对象
 * @param obj  包含有真实业务实现的对象
 * @return   返回代理对象
 */
public Object getProxy(Object obj) {
    this.target=obj;//保存真实业务对象
    return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
            .getClass().getInterfaces(), this);
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
        throws Throwable {
    Object result=method.invoke(target, args);//通过反射调用真实业务对象的业务方法,并且返回
    return result;
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

这是如何使用这个动态代理对象

public static void main(String[] args) {

        UserService service=(UserService) new ServiceProxy().getProxy(new UserServiceImpl());
        service.saveUser();
}

1
2
3
4

面试题14. 什么是序列化和反序列化?序列化的底层怎么实现的?

什么是序列化和反序列化?

Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程

序列化的底层怎么实现的?

其实就是利用了java的IO流来进行实现的,

public static void main(String args[]) throws IOException {

   FileOutputStream fos = new FileOutputStream("D:/demo.text");  
 
   ObjectOutputStream oos = new ObjectOutputStream(fos);  

 //这个是一个需要序列化的实体对象
   User user = new User();  
 //这是为了把实体对象写到输出流中,然后保存到D盘的一个路径下
   oos.writeObject(user);  

   oos.flush();  
 
   oos.close();  

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

面试题15. switch中可以用String吗?

在Java5以前,switch(expr)中,exper只能是byte,short,char,int类型(或其包装类)的常量表达式。
从Java5开始,java中引入了枚举类型,即enum类型。
从Java7开始,exper还可以是String类型。
但是long在所有版本中都是不可以的。
jdk1.7并没有新的指令来处理switch
string,而是通过调用switch中string.hashCode,将string转换为int从而进行判断。hashcode返回的是int型

作者:依本多情
来源:CSDN
原文:https://blog.csdn.net/qq_36520235/article/details/87459446
版权声明:本文为博主原创文章,转载请附上博文链接!

Linux的进程间的通信有哪些方式?

信号量机制、共享内存、管道、共享文件

Liunx下如何查看共享内存的情况呢?

作者:你别过来

链接:

https://www.nowcoder.com/discuss/165028?type=2&order=0&pos=18&page=1

来源:牛客网

1:CDN原理以及如何更新缓存?

2:springboot启动流程?

3:mysql索引为什么要用B+树?

4:二叉树深度优先广度优先进行查找?

5:mysql语句性能评测?

6:docker如何重写?

7:垃圾回收如何处理循环引用问题?

作者:咯吱咩咩咩

链接:

https://www.nowcoder.com/discuss/163335?type=2&order=0&pos=38&page=1

来源:牛客网

SQL

  1. inner join,left join
  2. 有一个表,字段有uid,amount,time查询时间在2019.2.25的总金额和人的情况
  3. 如果有一亿条记录如何优化?
  4. 索引建立在什么字段上?

因子只有3 5 7 求第n大的数

超时重传,由谁来重传

如果一直没有收到,服务端会怎么样

select 和 epoll 的区别及分析

当你在 Linux 的 bash 中按下 Ctrl+C 时,操作系统会做出什么反应,给操作系统发出的那个信号怎么拼写

是硬中断和软中断(接上一题)

标签: none

添加新评论