2018Java开发面经(持续更新)

不要给自己挖坑!!!不要给自己挖坑!!!不要给自己挖坑!!!如果面试官只是问你了解xxx吗,如果不是很了解,就直接说不知道,不要说知道,不然面试官深问再不知道就印象很不好!

处女面送给了头条(北京)日常实习(一面挂,视频面,持续时间一个小时,2018.3.28):

1.项目问题---针对在线考试系统
  1)数据表结构,表之间的关系,包括有几个表,每个表里面包含的字段,表之间是怎么关联的。
  2)扩展需求(我的设计里面学生每场考试只能考一次):学生反复考同一份考试,怎么查看每场考试的具体情况?
    解决办法:可以新建一个考试情况表,存储相关信息。然后根据考试情况表的id,来区分每场考试情况。即前台点击的时候,可以hidden当前的考试情况id,然后后台就可以区分了。
  3)计算和传文件时间较长,怎么处理?
2.项目问题---针对商城
  1)怎么发展成集群?集群是什么意思?
  2)订单号怎么生成?
  3)怎么实现定时关单?
  4)为什么要做购物车商城
  5)get和post分别在什么情况下使用?
3.基础
  1)mysql索引,两个关键字的索引,如果只查其中一个,是否用到索引?
  2)hashmap的时间复杂度是多少,解决冲突的办法有哪些?
    解答:时间复杂度是o(1),但要具体分析一下,因为里面还有链表的复杂度存在。
4.手撕算法
  1)传入是hashmap,嵌套多个key,怎么去除嵌套的key,还原数据。即类似{url:{url:{url:127.0.0.1}}}的数据,将最里面的数据还原。
  2)有序数组,怎么确定某一个数有多少个。(感觉想考二分查找,时间复杂度要小于o(n))
字节跳动(武汉)暑期实习(两面技术一面HR,现场面,给了口头offer拒了。持续时间技术面平均一个小时,hr十分钟,2018.6.15)
openday做了笔试题,10个单选题,两个算法题,一个设计题。
单选题内容:
1)多线程访问情况下,变量是否加锁问题。代码如下:这里需要加锁的是a和b。因为k是每个线程独有的,而a和b是共享的。
1 int a = 10;
2 public int fun() {
3 static int b = 10;
4 int k = 1;
5 }

2)操作系统LRU的计算题。

3)TCP和UDP的区别。

4)网络子网的计算,即有多少个子网,每个子网多少个主机。

5)16进制表示的两个有符号数相加,0x7FFF FFFF FFFF FFFE + 0x1000 0000 0000 0000,结果是-2。

6)堆排序的时间复杂度是o(nlgn),建堆的时间复杂度是o(n),调整堆的时间复杂度是o(lgn)。

7)排列组合问题,20分钟内一辆车经过的概率是75%,则10分钟内一辆车经过的概率是多少。

  设10分钟内一辆车经过的概率是p,则有(1-p)(1-p)+0.75=1,解得p=0.5。

8)汇编高低位怎么放置的问题。

算法题:

1.寻找数组中的峰值(比左右两个值大)。直观解法是o(n),遍历一遍找到就返回;优化解法是o(lgn),二分查找,一旦找到就返回,否则左右谁大往哪边找。

2.leetcode42题

设计题:

设计微博时间线系统,关注的人发微博后怎么实时更新到粉丝首页,尽量少的延时,下滑时翻页是怎么做到的。要求,模块设计,模块之间的协调通信。

解决:仿照微信(写扩散)。写扩散的应用:粉丝和发微博不是很多的情况。每次关注的人发微博的时候要向粉丝写入数据。所以当数据量太大的时候有可能承载不了,但是微信朋友圈是可以的。读扩散的应用?

考察:设计题没有标准答案,要注意针对不同的实际业务量有不同的分析和解决方案。

一面(五十分钟)

1.针对笔试题,一一追问解决办法。

2.TCP和UDP的区别:TCP可靠、具有拥塞控制,但是有延时、消耗资源;UDP不可靠,适用于视频通话等。

3.画出项目的整体框架图,是架构式的,系统瓶颈在哪里(图片服务没法更新、tomcat没做异步)。

二面(一个小时,TCP和UDP的问题问的很深入,起码问了有半个小时)

1.域名解析过程,IP由DNS服务器解析出来,DNS用UDP协议,HTTP的PORT默认是80,用到了TCP建立三次握手连接,数据链路层查找MAC地址用的ARP协议(但这个协议实际是网络层的)。

1.TCP和UDP深入追问,TCP是针对字节流的,UDP是针对报文的,他们的本质区别是什么?即字节流和报文在发送和接收数据方面有什么不一样的地方?TCP由于有窗口大小的限制,所以发送端发送过来的数据如果过大,不能一次性全部接收,而应该循环接收,直至全部接收;而UDP则没有这种限制,发送端发多少,接收端就可以收多少。

2.Socket编程中,发送端send两次10B的数据,接收端receive一次数据,可以接收的数据范围是多少?1B~20B。

3.MySQL索引有哪些?左前缀索引是什么样的概念?在什么样的情况下索引会失效?

4.MySQL的引擎有哪些?有什么区别?

5.redis的数据类型有哪些?各适用于什么场景?

6.Java里面的map都有哪些子集合?各有什么区别?HashMap(允许null值,非线程安全,时间复杂度是o(1)),HashTable(不允许null值,线程安全),TreeMap(有序,时间复杂度是o(lgn))。。。

8.HashMap的key是自定义的类时,为了保证key的唯一性,应该重写该类的hashCode和equals。

7.加密存储是用什么加密的?MD5是不可逆加密,可不可以用密钥加密?为什么不采用密钥加密,这种可逆加密与不可逆加密有什么区别,各有什么好处?

8.自己挖坑了。。。加密算法了解一些吗?对称加密和非对称加密。。。

9.单点登录系统的实现思路。单点登录主要解决什么样的问题?cookie不能跨域问题。你的系统中解决了什么样的跨域问题?www.mall.com和www.baidu.com这种跨域问题怎么解决?

10.写sql语句,uid,date,count分别表示学号,进图书馆的日期,进图书馆的次数,查出每个学生四月份进图书馆的总次数。select uid,sum(count) from t where 4月份 group by uid。

11.Java中的堆区和栈区有什么区别?

 
京东(北京)暑期实习(两面技术一面Hr,电话面,由于害怕对秋招由影响,hr还没开始我就拒掉了)

一面(2018.4.13)

1.技术方面介绍一下项目。
2.用到了redis的哪些数据结构。
2.集群是什么,怎么发展成集群的形式?
3.ngnix的conf怎么配置成集群?
4.散列表解决冲突的方式有几种?各有什么优劣,哪种最好?
5.介绍一下kmp算法。

二面(2018.4.17)

1.每个组成的作用和所处的角色,包括JDK,JRE和JVM。JRE和JVM的区别。

  答案:JVM不只做回收,

2.在什么场景下会用到哪些集合类?

  答案:HashMap,ArrayList,HashSet等。

3.每个集合类的特性。

  答案:hashmap可以存session,hashset不允许重复值,arraylist获取列表。hashset数据是否有序。基于set的有序存储应该用什么实现,treeset。

4.重写和重载的区别以及什么时候使用。子类怎么调用父类的方法。

5.线程和进程之间的区别以及各自的优缺点以及各自的使用场景。

6.线程的状态及转换关系。

7.快排和冒泡的流程。

8.JVM的GC、分代回收等。

9.堆和栈存储的是什么?基本数据类型和字符串存在哪里?方法定义存在哪里?

  答案:堆:对象。栈:引用。

10.http请求的流程

  答案:查找本地缓存ip->DNS解析等。

11.

阿里内推sdn开发实习(一面挂,每次接到电话都是晚上,2018.4.23)

1.介绍源地址验证项目。
2.用什么进行验证匹配,五元组?验证规则有优先顺序吗?
3.另一个项目主要负责了哪一部分。
3.用到了什么数据库,redis存session数据,数据过期怎么办?
4.spring怎么加载数据?
5.依赖注入是怎么回事?
6.用到了哪些注解,每个注解的作用和原理。
 
 
 
vivo秋招提前批(offer已拿,一面技术一面Hr,2018.6.5)
技术面 
1.数据库有多少种范式?每种范式都解决了什么问题?你的电商项目里用到了哪种范式?
2.linux有没有编译过c++程序,c++与java的区别是什么?
3.md5是加密算法吗,怎么进行加密的?
4.设计模式有多少种?
5.抽象类和接口的本质区别,什么时候用抽象类(模板),什么时候用接口(更抽象)?
6.在高数据量的情况,怎么实现数据控制拦截?
7.怎么确定是正常数据包还是伪造数据包?验证方式是什么?轮询。
8.单点登录跨域问题的解决。
9.ngnix做反向代理和静态加载,location的配置。
10.国内主要的交换机厂商有哪些?
11.分布式高并发,tomcat的设置使用相关。
12.http的状态码有哪些?各代表什么含义?比如200,404,405,500,301,302等。
hr面
1.自我介绍
2.兴趣爱好
3.对vivo的了解
4.家庭情况
5.工作地点要求
6.面对加班情况,女生相对于男生的优势在哪里
反问问题:新人的培训体系是什么样的。

2018java开发一些面经的更多相关文章

  1. 20165226 实验三 敏捷开发与XP实践

    实验三 敏捷开发与XP实践 实验目的 一.安装alibaba 插件,解决代码中的规范问题.在IDEA中使用工具(Code->Reformate Code)格式化代码,研究一下Code菜单,比较功 ...

  2. 20165322 实验三 敏捷开发与XP实践

    实验三 敏捷开发与XP实践 安装alibaba 插件,解决代码中的规范问题 根据老师的教程:打开Settings ->Plugins -> Browse repositories...在搜 ...

  3. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  4. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  5. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  6. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  7. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  8. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  9. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

随机推荐

  1. mysql导出数据很快,导入很慢

    mysql导出快,导入特别慢的解决方法:在导入时添加两个参数:max_allowed_packet; net_buffer_length --max_allowed_packet   客户端/服务器之 ...

  2. 学习笔记(2)centos7 下安装mysql

    centos7安装mysql 本文通过yum方式安装mysql 1.添加mysql yum 仓库 去mysql开发者中心(http://dev.mysql.com/downloads/repo/yum ...

  3. var let const的一些区别

    var let const 都是来定义变量的. var let 作用域有些区别. const 类似于java中的常量的概念.即:只能给一个变量赋值一次,即指定一个引用. 举例来说: function ...

  4. 附件上传——mysql blob类型的数据(springboot)1

    作为一个初出茅庐的菜鸟,这几天做了一下附件的上传与下载,附件文件存储在mysql中,数据类型为blob.在此做一下总结.望指正. 一.先总结附件的上传.(实质是将文件传到controller,后处理成 ...

  5. CSS中的动画

    1.transition 在CSS3中,可以通过transition为元素从一种样式变换为另外一种样式的过程添加效果. transition为简写属性,用于在一个属性中设置四个过渡属性,分别是: tr ...

  6. 我的Tmux学习笔记

    0. 修改指令前缀 // ~/.tmux.conf ubind C-b set -g prefix C-a 1. 新建会话 tmux tmux new -s session-name // 可以设置会 ...

  7. Linux的数据传输

    1. sz 与 rz sz:将选定的文件从本地发送(send)到远端机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件夹,接收(receive)从远端的文件 mac 下使用 brew 安装: ...

  8. 关于485通信不稳定问题解决方案[STM32产品问题]

    485通讯不稳定的问题(具体表现为有时能通讯上,有时通讯不上) RS485在连接设备过多.通讯距离过长.双绞线质量差,接线不规范等,都会导致通讯不稳定的问题. 解决方案: 一.关于485总线的几个概念 ...

  9. python教程(二)·变量

    什么是变量?在百度百科中,变量的解释是: 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过-- 这是一段很长很长的解释,其实,作者认为没必要这么机械式的去理解.简单说,变量 ...

  10. 二维离散余弦变换(2D-DCT)

    图像处理中常用的正交变换除了傅里叶变换以外,还有一些其它常用的正交变换,其中离散余弦变换DCT就是一种,这是JPEG图像压缩算法里的核心算法,这里我们也主要讲解JPEG压缩算法里所使用8*8矩阵的二维 ...