-
介绍一下信号量。
信号量的本质是数据操作锁,他本质不具有数据交换功能。 同时它是操作系统用来解决并发中的互斥和同步问题的一种方法。
-
说说Linux如何管理内存。
段页式内存管理: 优点:高效提高内存利用率, 而分段存储管理能反映程序的逻辑结构并有利于段的共享。 将这两种存储管理方式结合起来,就形成了段页式存储管理。
-
介绍一下Java中的IO流。
四个基类:InputStream、OutputStream、Reader、Writer 由左至右分别代表: 字节输入流 字节输出流 字符输入流 字符输出流
-
OSI七层模型。
1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层
-
TCP协议三次握手和四次挥手的过程。
三次握手: 1.第一次握手,客户端发送请求给服务端,然后客户端等待服务器的确认。 2.第二次握手,服务端发送回应给客户端,然后服务端等待客户端确认。 3.第三次握手,客户端接收到后发送数据包给服务端,确认服务端发送正常,然后客户端和服务端都进入就绪状态,即接收和发送都正常。至此,三次握手成功。
-
说说你对布隆过滤器的理解。
Bloom filter bloom算法类似hash set,用来判断某个元素是否在某个集合中。 可以插入元素,但是不可以删除已经有的元素。
-
谈谈InnoDB引擎的锁。
InnoDB是MySQL最流行的存储引擎,在大数据量高并发量的业务场景下有非常好的性能表现。 七种锁: 1.自增锁 2.共享锁,或者叫做排它锁 3.意向锁 4.插入意向锁 5.记录锁 6.间隙锁 7.临建锁
-
简述一下GDB常见的调试命令。
break:在源代码指定的某一行设置断点, run : 执行被调试的程序 continue:当程序在某一断点处停止后,用该指令可以继续执行,直到遇到断点或者程序结束 next:令程序一行一行代码执行 step:如果有调用函数,就进入被调用的函数内部 print:打印指定变量的值。 list:显示源程序代码的内容,包括各行各代码所在的行号 finish:结束当前正在执行的函数。 return: 结束当前调用函数并返回指定值。 quit:终止调试。
-
编程题:实现有重复数字的升序数组的二分查找
给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1
-
Char和VarChar的区别。
存储和检索不同
-
介绍一下几种IO模型。
阻塞IO(blocking I/O) 非阻塞IO(noblocking I/O) 信号驱动IO(signal blocking I/O) IO多路转接(I/O umltiplexing) 异步IO(asynchronous I/O)
-
微服务架构有哪些优势。
独立开发,所有的服务都可以根据各自的功能轻松开发 独立部署,基于服务,可以单开。 故障隔离,在应用程序中,即使某一个服务失效了,系统依然可以继续运行 混合技术堆栈,可以使用不同的语言构建同一个应用。
-
内存溢出问题该如何解决。
修改JVM启动参数,直接增加内存,然后检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。然后对代码进行走查和分析,找出可能发生内存溢出的位置。
-
Java中守护线程和本地线程的区别。
唯一的区别是,判断虚拟机(JVM)什么时候离开,守护线程是为了其它线程提供服务的,如果全部的User Thread已经撤离,守护线程没有可以用的服务线程,虚拟机就会撤离,这么理解:用户线程是程序创建的线程,而JVM的垃圾回收线程就是一个守护线程,当所有线程不再产生垃圾,守护线程就没有存在的必要,所以垃圾回收线程会是Java虚拟机上最后的线程。
面试日志二
最新推荐文章于 2024-07-26 16:04:52 发布