跳至主要內容

Unisky's Galaxy

一个人的宇宙

技术岗面试题小结(三)

研发岗的面试问题可能不会局限于某个编程语言或者某个技术栈,有时候也会去问一些比较杂项的东西,所以这里单开一个系列来汇总这些杂项题目。可能会包括一些智力题和应用题

1.RPC

远程过程调用(Remote Procedure Call) 是一种通过网络从远程计算机请求服务的协议。

是用于实现分布式计算的通信协议和编程模型,允许网络不同计算机之间互相通信和调用,其中提供服务的计算机被称为RPC服务器。

2.b+树与索引

聚簇索引: 按照每张表的主键(PRIMARY KEY)构造一颗B+树,叶子节点存放整张表的记录数据。每张表只能有一个聚簇索引


Unisky大约 7 分钟学习面试
消息队列和RabbitMQ

1.简介

RabbitMQ是最常见的消息队列中间件之一,相比Kafka在中小型项目中应用更广。该文针对RabbitMQ在Java环境的使用进行展开。主要是通过RabbitMQ来深入理解消息队列(下简称MQ)这一种中间件。

该中间件是基于Erlang语言开发的,也自带Erlang的Emnesia分布式实时关系数据库

2.控制界面

通过http://localhost:15672/可以访问RabbitMQ的控制中心,需要输入账号密码,默认需要在localhost下使用guest/guest才能登陆。


Unisky大约 4 分钟学习面试
航行日志0907

今天参加了两个公司的笔试,都有选择题和算法题,算法题都是三道

第一场笔试相对比较简单,三道算法AK了,第二场笔试很难,选择题还包括不定项选择,算法第三道也因复杂度太高未能AC

一些有记忆的部分

1、字符串匹配KMP算法。前两天刚好复习到了,结果就考了

2、TELNET协议、IGMP协议、RIP协议、SNMP协议。 我一个都没接触过

3、解决哈希冲突:平方探测法。有点印象但不多

4、段页式存储管理。计组的东西,肯定学过,但是肯定也不会,跪了。

5、Kotlin语法。没学过

6、小端存储、大端存储。忘了


Unisky大约 1 分钟日常
技术岗面试题小结(二)

研发岗的面试问题可能不会局限于某个编程语言或者某个技术栈,有时候也会去问一些比较杂项的东西,所以这里单开一个系列来汇总这些杂项题目。可能会包括一些智力题和应用题

1.CAS算法的缺点

ABA问题,数据经过多次修改回到了初始值,此时使用CAS算法无法判断是否被修改 解决方案是引入版本号数据,案例有Java的AtomicStampedReference类

高竞争开销,反复重试的情况下CPU开销大,解决方案是引入退出机制,设置重试次数上限,或避免使用乐观锁

功能受限,CAS只能保证单值的操作原子性


Unisky大约 6 分钟学习面试
技术岗面试题小结(一)

研发岗的面试问题可能不会局限于某个编程语言或者某个技术栈,有时候也会去问一些比较杂项的东西,所以这里单开一个系列来汇总这些杂项题目。可能会包括一些智力题和应用题

1.大量数据,寻找重复次数最高的k条数据

大量数据可能是10G以上的级别,而内存大小有限,这意味着不可能通过内存一次性完成提取,必须要有分治法的思想。

  • 法1:将数据分成若干份,每份单独排序,然后利用堆(或优先队列)的数据结构对这些若干小数据进行多路的外部排序,将最终的排序结果保存到大文件中。遍历排序后的文件,逐条读取数据并进行计数,读取到不同数据时确定上一组数据的频数,并用大小为k的大顶堆进行储存,遍历完成后,堆内留下的k个数据就是我们需要的数据。

  • 法2:数据类型不多、重复率高的话,可以分成多个小文件,分别逐条读取数据通过Hash统计


Unisky大约 9 分钟学习面试
前端基础知识-HTML

主要是前端开发的一些基础知识的整理,本部分着重在HTML和HTTP方向

关于HTML的编码相关知识,详见HTML详细教程

1.HTML与XHTML

HTML是超文本标记语言(Hyper Text Markup Language),通过一系列标签统一网络文档格式

XHTML是可扩展超文本标记语言(eXtensible HyperText Markup Language),基于XML和HTML发展而来的新兴网络设计语言。


Unisky大约 6 分钟学习面试HTML前端
Druid

1.简介

Druid是Java语言常用的数据库连接池,提供了强大的监控和拓展功能,自带监控页面,可以实时监控应用连接池情况和sql运行情况。

Druid实质上是一个JDBC组件,可以用于代替Java原生的DBCP(数据库连接池)和C3P0数据库连接池

2.监控

通过 http://ip:PORT/项目名称/druid/可以访问Druid的监控界面,需要输入账号密码。

监控功能包括:

  • Druid系统信息,java版本、jvm名称等
  • SQL监控,执行语句、执行次数、执行时间、详细执行情况、执行错误数等统计信息(可通过配置Druid的SQL防火墙进行过滤)
  • 慢SQL监控,将执行时间阈值以上的SQL语句进行统计
  • log日志输出,依赖slf4j
  • Spring监控,基于Spring的AOP(面向切面编程)特性实现项目内方法级的监控,不局限于数据库监控。

Unisky大约 1 分钟学习面试Druid
Kubernetes(k8s)

1.什么是k8s?

本文内容都建立在kubernetes中文文档的基础上

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。简单来说,k8s就是可以管理容器部署的分布式框架。

与k8s相似的是docker swarm

kubernetes有下面几个重要的功能:


Unisky大约 2 分钟学习面试Kubernetes
Java基础复习-Spring

这一部分主要是Spring和Bean相关概念的复习

1.Spring的两大特性

分别是AOP(面向切面编程)和IOC(依赖反转)

其中AOP是基于面向对象开发思想的一种补充,将业务代码中重复的部分封装为切面,实现这部分内容与业务代码的分离,降低代码的重复性和耦合度。

IOC是原本由我们去创建、管理的对象交由Spring容器进行管理,由Spring借助反射机制对Bean进行管理,使得对象的生命周期(从创建到销毁)不需要我们手动去管理。

2.Spring中AOP的实现方式

动态代理实现,包括JDK动态代理和CGLib动态代理


Unisky大约 3 分钟学习面试Java
Java基础复习-线程与并发

这方面接触的不多,希望不会出错误

1.线程、进程和协程的区别

进程是操作系统在内存中分配的一个应用程序,进程之间互相独立,有独立的内存空间。

一条进程可以包括多条线程,线程是执行任务的主要单位,同进程内的所有线程共享该进程的数据,可以并发执行,需要同步机制避免线程对数据操作的冲突。

线程不共享的资源包括:栈、寄存器、线程局部存储、线程信息等

一条线程可以拥有多条协程,协程调度由程序(用户)来执行,而进程线程都由内核调度。Java没有实现协程(Kilim框架模拟实现了协程),Python中通过yield/send或async/await实现协程。


Unisky大约 6 分钟学习面试Java