首页 存档 技术 查看内容

2017 实习面试问题总结(阿里、头条、美团、cvte、乐视、华为)

2018-3-30 13:00 |来自: 互联网 364 0

摘要: 本人比较渣,从3月份开始找实习到现在,面了一些。把自己面试中遇到的问题拿出来跟大家分享一下,希望大家都能拿到自己满意的offer。 问题基本都是凭自己记忆,可能不太全,日后想起来的话再更新。希望能帮助到各位 ...


本人比较渣,从3月份开始找实习到现在,面了一些。把自己面试中遇到的问题拿出来跟大家分享一下,希望大家都能拿到自己满意的offer。


问题基本都是凭自己记忆,可能不太全,日后想起来的话再更新。希望能帮助到各位。


华为一面 2017年4月8日

1.线程和进程


2.操作系统的线程和java的线程区别

操作系统线程有两种状态:用户态和内核态(和心态)

图 1. Java 线程创建调用关系图

综上所述,Java 线程的创建调用过程如图 1所示,首先 , Java 线程的 start 方法会创建一个本地线程(通过调用 JVM_StartThread),该线程的线程函数是定义在 jvm.cpp 中的 thread_entry,由其再进一步调用 run 方法。可以看到 Java 线程的 run 方法和普通方法其实没有本质区别,直接调用 run 方法不会报错,但是却是在当前线程执行,而不会创建一个新的线程。


3.反射


cvte二面2017年4月12日

1.tcp四次挥手

2.设计模式

3.状态码:

(1)304:post请求是否会返回这个状态码

(2)...

4.nginx单点故障:

dns负载均衡:一个域名对应多个IP地址。dns服务器将解析请求多个IP。


cvte一面 2017年4月8日

1.内存溢出

指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出


是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;


根本原因:内存申请的速度大于垃圾回收的速度。久而久之,内存越用越少,导致内存溢出。


Java可能出现的内存溢出:

(1)程序中的死循环,或者循环过多,而产生过多重复的对象实例。

(2)存在对象的引用, 使用完没有清楚,导致jvm无法回收。

(3)一次操作中,申请过大的内存。


内存溢出类型:

(1)java.lang.OutOfMemoryError:PermGen space


是指内存的永久保存区域。这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)Heap区域不同,GC不会在主程序运行期对PermGenspace进行清理。


JVM由XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;


JVM由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。


该错误常见场合:

a) 应用中有很多Class,web服务器对JSP进行pre compile时。

b) Webapp下用了大量的第三方jar, 其大小超过了JVM默认的大小(4M)时。


(2)java.lang.OutOfMemoryError:Java heap space

在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。


JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;


JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。


2.内存泄漏

指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态


结果你申请到的那块内存你自己也不能再访问(也许你把 它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。


Java可能出现的内存泄漏:

(1)常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

(2)偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要

(3)一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。

(4)隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。


3.Java会出现内存泄露吗

会。当分配的对象可达,但是已经无用(未对作废数据内存单元的引用置null),此时该对象内存泄漏,不能被垃圾回收,例如:


Vector v = new Vector();for (int i = 0; i

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部