借鉴面试总结

转自师姐的博客:http://blog.csdn.net/anjing900812/article/details/51558969

        时间过得真快,就要准备面试了,上次面试还是保研的时候,虽然保研面试的时候面试了北大,中科院,浙大,浙大跪了,北大弃了,最后来了中科院,不后悔,师兄师姐老师很nice,实验环境很好,项目很多,补贴也很多哦。信工所MESA欢迎大家。

面试总结一:

一面:

  1. 单向链表中倒数第k个节点;
  2. Static函数的特点(可以在不创建对象的情况下直接调用,比如单例模式中获得唯一对象就是通过静态方法,还比如main函数)
  3. HashMap的原理,我主要回答了put操作的原理,且他不是线程安全的。那么,如果多个线程对其同时读写会出现什么异常情况:key链表的循环访问。扩容之后rehash。
  4. 访问一个网站的过程:域名解析,TCP连接,HTTP请求,前端浏览器解析网页,如果有动态表单,怎么与数据库、服务器交互?
  5. kafka高并发,快如何实现:消息持久化至磁盘,顺序读写,零拷贝技术;
  6. 永久代的作用:好吧,永久代就是方法区,当时没有反应过来,说了垃圾分代回收中老年代的作用;
  7. 一个正在运行的java进程,如何查看其日志文件在哪里,或者配置信息:我用ps -aux | grep找到了这个进程,可以看到一部分信息,之后请教面试官,应该是jinfo命令,好吧。一个博客链接,学习:JVM问题诊断常用命令:jinfo,jmap,jstack

二面:

  1. 手写代码:有序数组中重复数字出现的次数:注意特殊测试用例,如果整个数组只包含一个数字,如何优化?
  2. 概率题:每一次只能向左走或者向右走,n步之后回到原点的概率;

面试总结二:

一面:

  1. HashMap的工作原理,垃圾回收算法有哪些;
  2. 打印n行n列的蛇形数组:写完之后设计测试用例,注意分析总结,比如奇数和偶数时,最后一圈的不同;
  3. 有序数组中,打印所有组合,他们的和为指定值:两个指针,分别向前向后移动。
    1. 特殊情况:数组中存在大量重复的数据,例如[1,1,1,1,8,8,8,8,8,8],target=9,要求输出所有的组合,怎么处理?
    2. 判断两个值之和等于target之后,加一下内层循环,并记录此时的j,在内层的while循环中找到所有满足条件的组合,循环结束后,i++,j变为之前的值,以进行和新i的配对;
  4. 整数数组中,元素递增,找到缺失的那个值;
    1. 求和,期望和和实际和的差值;
    2. 数组有序,所以每一个元素依次和之后相邻的元素进行比较,是否差值为1,时间复杂度O(N);
    3. 更优的方法:对比每个元素值和下标的关系,其差值,可以发现缺失之前的元素差值为nums[0],缺失只有的为nums[0]+1;所以可以用二分查找,找到第一个差值为nums[0]+1的位置,就知道缺失的元素位置及其值;
    4. 更优的方法:借鉴数组中只有一个数字出现一次的的思想:将该数组与完整的无缺失元素的数组合并,那么只有缺失的元素只存在一次,用抑或进行运算即可;面试官好牛!
  5. 如果,数组是无需的,元素依然递增,寻找缺失的值:
    1. 将元素交换至其本应在的位置,指针可以向后移动的条件是,当前位置已经放置了正确的元素,或者是最大值;
    2. 那么最大值没有相应的位置,所以遍历整个数组后,最大值所在的位置,就是缺失的元素;
虽然由于实习时间问题没有拿到offer,但是收获很大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值