JAVA面经复习(二十七)

面试难度:☆☆☆☆

推荐指数:☆☆

推荐原因:总体来说本篇面经难度不高,但知识比较偏向个人项目,基础内容不多。适合特定相关技术栈的人士复习。

声明:答案均为网上搜索汇总得到的参考答案,如有不妥或意见相左之处欢迎指出!

问:redis的进程?

答:采用命令ps -ef | grep redis可以查看redis的进程。

问:MySQL引擎 ?

答:Innodb引擎和MyIsam引擎,其不同主要在于:

1、Innodb支持事务。

2、Innodb采用聚簇索引减少回表。

3、Innodb支持外键。

4、Innodb支持行锁,MyIsam支持表锁,但Innodb仅在索引生效的时候使用行锁,否则是表锁。

问:二叉树层序遍历?

答:简单的构建队列进行遍历。

问:给N+1个数据,其中1个是重复的,数据范围是1-N 如果用累加公式的话可能存在溢出问题,需要用到BigDeciaml

答:如果是找重复数组的话,比较经典的可以考虑采用hash的方式。

问:进程之间的通信方式?

答:1、管道/命名管道。2、消息队列;3、信号量;4、共享内存。

问:JVM中常用的垃圾回收器 ?

答:一共有7种:

(新生代)----------------------------

1、Serial垃圾收集器,其是单线程的垃圾收集器。收集算法采用复制算法。

2、ParNew垃圾收集器,其是Serial收集器的多线程版本。默认开启线程数与CPU一致。

3、Parallel Scavenge垃圾收集器,ParNew 的目标是尽可能缩短垃圾收集时用户线程的停顿时间,Parallel Scavenge 的目标是达到一个可控制的吞吐量。吞吐量就是 CPU 执行用户线程的的时间与 CPU 执行总时间的比值【吞吐量 = 运行用户代代码时间/(运行用户代码时间+垃圾收集时间)】

(老年代)----------------------------

4、Serial Old 收集器,其为Serial垃圾收集器的老年版本,收集算法采用标记整理算法。

5、Parallel Old 收集器是 Parallel Scavenge 的老年代版本,是一个多线程收集器,采用标记-整理算法。可以与 Parallel Scavenge 收集器搭配,可以充分利用多核 CPU 的计算能力。

6、CMS(Concurrent Mark Sweep) 收集器,其是一种以最短回收停顿时间为目标的收集器,以 “ 最短用户线程停顿时间 ” 著称。整个垃圾收集过程分为 4 个步骤:

初始标记:标记一下 GC Roots 能直接关联到的对象,速度较快。

并发标记:进行 GC Roots Tracing,标记出全部的垃圾对象,耗时较长。(与用户进程并发)

重新标记:修正并发标记阶段引用户程序继续运行而导致变化的对象的标记记录,耗时较短。(与用户进程并发)

并发清除:用标记-清除算法清除垃圾对象,耗时较长。

CMS的缺点主要是由于其与用户进程并发执行的,因此其无法解决浮动垃圾

(堆)----------------------------

7、G1收集器和上述收集器的最大不同在于,其不区分新生代和老年代,统一采用标记整理的算法。G1 收集器收集器收集过程同样有初始标记、并发标记、最终标记、筛选回收四部分。但值得注意的是其在筛选回收的过程中,并非是与用户进程并发的而是单线程的。因此其可以很好的解决浮动垃圾的问题。

问:Http是什么层?下面网络层是基于什么协议?

答:应用层, 底层基于网络层的TCP协议。

问:输入一行网址,浏览器发送的是什么指令 POST GET?

答:默认是使用Get的指令,一般填入数据往服务器端发送,如注册登陆等,才会使用post请求。

问:Cookies认证,如果要防止别人利用Cookies进行攻击,如何阻止,除了HttpOnly还有什么其他的方式?

答:cookie是服务器发送给客户端的用于验证某一会话信息的数据,cookie中有很多字段。不同网站Cookie中字段是不一样的,是由服务器端设置的。Cookie中常放入session_id 或者 token 用来验证会话的登录状态。

XSS(跨站脚本攻击)是指攻击者在返回的HTML中嵌入javascript脚本,为了减轻这些攻击,需要在HTTP头部配上,set-cookie:httponly-。这个属性可以防止XSS,它会禁止javascript脚本来访问cookie。

问: 跨域攻击(CSRF),XSS攻击?

答:CSRF通俗可以理解成攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。

XSS主要分为三种类型,存储型 XSS 攻击,反射型XSS攻击和基于DOM的XSS攻击

问: 比较常见的网络攻击模式?

答:1、DDoS攻击;2、SQL注入;3、恶意小程序;4、木马注入。

问:常用的Linux命令 ?

答:实用技能:60个常用的Linux命令

问:系统调用?

答: 系统调用是属于操作系统内核的一部分的,其是系统提供给用户进程用于与硬件设备进行交互的一组接口。必须以某种方式提供给进程让它们去调用。操作系统一般是通过中断让进程从用户态切换到内核态,在核心态中再执行相应的系统调用。

问: cat a.txt | grep “abc” > abc.txt用了什么系统调用?

答: 。。。。。(有待补充)

参考资料:

Shopee Java一面春招凉经

JVM常见的垃圾回收器

Cookie、Session和Token认证

[浅谈CSRF攻击-跨域攻击](