23年校招Java开发同花顺、滴滴等面经
前言
已经工作近半年时间了,最近突然翻到这份面经,于是想整理一下一些面试的经验,大中小公司都有
青书一面 50min
数据库、java基础。
Cas机制。
Tcp/udp区别
堆排序介绍,答错了,弄成桶排序了,面完才想起java有个优先队列是用堆排序。
算法是二叉搜索树转双向链表,没写出来。
这是自秋招后春招第一场面试,八股什么的都没好好准备。
同花顺一面 40min
1、 项目介绍,如何实现,MQ在项目中的作用
2、 Redis集群、哨兵、内存淘汰策略
3、 Java锁的区别,锁的用法
4、 Spring里用到哪些设计模式,以及介绍。答单例模式、模板模式(容器refresh)、工厂模式、责任链模式、代理模式、观察者模式
5、 线程安全注意哪些问题、有序性、可见性、原子性介绍一下。
6、 用过哪些线程安全的类atomic、cyclicbarrier、countdownlatch、semaphore。
7、 Java多线程、进程理解(每个面试必问!
8、 算法是斐波那契数列
同花顺二面 40min
1、 画架构图,MQ的使用。为什么使用RocketMQ,rabbitMQ特点呢。20分钟
2、 场景设计题,设计股票搜索,在java本地设计,实现前后中部分内容输入的搜索。只想到字典树,说了字典树,面试官问实现和搜索,把字典树的实现讲了一下,搜索只想到用dfs进行深度遍历。这里面数字的话最终的数据都是存在树的最底层,如果是拼音的话在拼音缩写结束那一层节点需要补上数据。问我优化搜索,想不到。面试结束后想到,可以用map,如果是数字搜索,六位股票代码,那么树就是六层高,把每一层都放到一个map,然后key是数字,value是树的结点,其次每个value节点都要有最底层所有节点的指针,这样方便搜索的时候从当前层跳到最后一层拿出数据。如果是拼音的话同理,但是不用存最底层数据的指向。
3、 问我抓过tcp包没有,也没有使用socket编程,答没有抓过,只在计算机网络实验课干过,只写过demo。讲一下抓包的时候会看到什么。脑里只想到了计算机网络考试的时候抓包数据是16进制的格式,就说每个包都是16进制的数据,后来查证应该是包头数据是16进制。问我聊不了解stream流,介绍一下,说是http2.0为了实现多路复用。然后设计一下stream流。。。磕磕绊绊讲了一会,实在没啥思路
4、 问实习时间
5、 反问他字典树方案可行吗,他说可以,只是需要优化。
以为挂了,后面通知hr面了,hr面后排序挂
滴滴一面 55min
面试官好评,是个年轻小伙,全程都有引导并且和我一起探讨,个人感觉是我遇到过的面试体验最好的!
1、 介绍一下java锁、锁机制、锁种类
2、 介绍AQS。从AQS实现底层state/队列、公平、非公平、以及其实现类lock cyclicbarrier、countdownlatch、semaphore讲。
3、 如何实现多个线程执行,另外一个线程等待线程执行。答cyclicbarrier/join实现
4、 问我AQS缺点,想了想lock的话要显示解锁,他笑了和我说你不觉得他实现很复杂吗。
5、 说我们来讨论一下spring的ioc和aop,以及应用。我介绍了ioc,实现控制反转。他问底层实现,答bean单例、反射、依赖注入。再问了aop的应用,事务、日志、实现,答jdk动态代理和cglib动态代理。
6、 讲一下计算机网络吧。Tcp/udp特性、tcp拥塞控制如何实现。问三四次握手挥手过程,为什么要四次挥手。为什么要time_wait。
7、 好像还有线程池的运行,答先核心,后放队列,之后new新线程直到MAX,然后按abortpolicy处理,有discard(不会抛出异常)/discardOldest/callerRuner/abort(会抛出异常。
8、 还有些项目的题、同样是讲MQ、redis、MySQL、项目的架构
9、 40分钟了,叫我写个算法题。环形链表,很快解决
10、 反问。结束面试
滴滴二面 60min
一面十分钟后就通知通过了,约二面了。
1、 面试官是leader面,上来就问我没有实习吗,答没有。直接写算法题,第一道是最大子数组的和,并且写出初始下表和结尾下表。力扣原题,写出来了,但不知道怎么处理初始下表。
2、 换了一道题,叫我写移动0的位置,同样leetcode原题,写出来了,但是他一直在做谜语人,说我题都读不懂,看了半天,原来是写测试用例验证逻辑正确性,之前没接触过这个名词,下意识没有想那么多。心态有点崩了,我说我来补测试用例像用junit那样子,他说不用了,你都知道了就没用了。然后又问我你不觉得这个代码有什么问题吗。我说没有。然后叫我用语文议论文的方式,用论点+论据来论证如何优化代码的方法,我说了时间复杂度和代码可读性。然后又问我如何优化,我说改变量名,然后他说还有吗,我说没有。结束的时候跟我说你没有把方法拿在main外面。。。诶,我以为只要输出结果正确就好了这种题,上个面试官直接叫我写在main里面就行了,有点无语,而且很多面试的时候,面试官都没那么多要求,一般写main函数里面就好了。
3、 给了道数据库设计题和写sql语句,太久没有写了,语法有点问题,但是写出来了。他看了后问你确定这样就好了吗,我说是。我没有给字段建索引,以为单单是建表出来就行了,结束的时候才意识到问题,在结束的时候也跟他讲了优化。
4、 就三道题。他说他一直在纠结要不要让我通过这次面试。我balabala了说机会很难得,自己也准备了很多,然后他想了想说,让我去小厂历练两年再来滴滴。说我这没有实习,基础不扎实,他自己说我可能也确实是因为我转专业这种情况导致没实习,说这也没办法。最后把我挂了
总结就是谜语人,中间还问我高考语文分数多少,质疑我的理解能力。
确实是挺可惜的,距离大厂第一次这么近。
天纵游戏技术面 20min
1、 java类加载机制
2、 spring注解的使用
3、 如何看待spring封装给新手带来的利弊。
4、 Redis简单问题、Mysql简单问题。
5、 为什么要有多线程、进程。
一家游戏技术面 60min
1、 bio/nio是什么,nio是buffer/channel/selector,一个线程轮询,通过channel传输数据,数据在缓冲区进行交换
2、 如何查找java死锁,不会。答案是jstack指令看线程状态。Jstat可以查看Jvm内存状态,垃圾处理状态
3、 感觉也没有什么值得记录的问题。996 有时候还9117 小公司不值得。
小天才安卓一面 30min
你确定你要安卓,前面几个面试的人都说是java后端,反复确认后他们放弃了这次安卓面试,你确定你要吗,我说确认。问java基础
1、 进程、多线程区别——线程是用栈内存,每个线程单独一个栈帧
2、 Java一般你如何使用锁、aqs/synchroninzed区别
3、 Tcp/udp区别
4、 https、http区别、https过程(客户端发起请求、携带支持的加密方式,服务器回应数字证书和选一个非对称加密、客户都验证证书,选一个随机数字,就是会话密钥,用公钥非对称加密,发给服务器,服务器解密,拿出密钥,这时候就跟客户开始建立对称加密。用密钥加密并且hash,发送给客户都。客户都解密,并hash验证hash值是否一样,一样则安全,之后进行对称加密通过。
非对称加密有RSA、对称加密有DES。
某上市公司:
1、 socket和http编程的区别
2、 路由器和交换机
3、 继承、多态、封装?静态多态、动态多态?
4、 创建线程池的方式
5、 介绍堆排序?插入、删除时间复杂度? nlogn
6、 怎么找出top10数据?
7、 频繁某个ip访问?攻击。加拦截器orFilter?
创业公司:
1、 抽象类。接口差别,为什么要这么设计
三星广州研究院:
1、 最长连续递增子序列。
2、 多个有序数组,对他们进行合并
3、 平衡二叉树、搜索二叉树、满二叉树、完全二叉树
4、 Topk数值?
面试通过了,但是需要线下笔试,且岗位是安卓,于是后面拒了。三星是WLB,入职就有第一年是12年假,满一年14,加班费周中1.5倍,周末双倍,严格遵守劳动法,只可惜是安卓岗,后面也经常惋惜,虽然是安卓岗,但是生活质量会比现在高很多。
23年校招Java开发同花顺、滴滴等面经的更多相关文章
- 知名互联网公司校招 Java 开发岗面试知识点解析
天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...
- 2015网易校招Java开发工程师(技术架构)在线笔试题
1. 程序和进程的本质区别是? A.在外存和内存存储 B.非顺序和顺序执行机器指令 C.独占使用和分时使用计算机资源 D.静态和动态特征 参考答案分析: 进程与应用程序的区别: 进程(Process ...
- 2015年网易校招Java开发工程师(技术架构)在线笔试题
1. 程序和进程的本质区别是? A.在外存和内存存储 B.非顺序和顺序执行机器指令 C.独占使用和分时使用计算机资源 D.静态和动态特征 参考答案分析: 进程与应用程序的区别: 进程(Process ...
- 世纪龙校招java开发一、二面 面经
头一天做的笔试,涉及到计组基本知识,还有几道智力题.java部分很简单(真的很简单有点基础就划过了) 第二天收简历 在隔壁教室等 叫到你 你就去面试 一面:先自我介绍 1 == 和 equals区别( ...
- 阿里巴巴 Java 开发手册 1.4.0
一.编程规约(一) 命名风格1. [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束.反例: _name / __name / $name / name_ / name$ ...
- java开发中的23中设计模式详解--大话设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Java开发中的23种设计模式(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- java开发中的23中设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 0. Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Java开发中的23种设计模式(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
随机推荐
- langchain中的chat models介绍和使用
简介 之前我们介绍了LLM模式,这种模式是就是文本输入,然后文本输出. chat models是基于LLM模式的更加高级的模式.他的输入和输出是格式化的chat messages. 一起来看看如何在l ...
- Android 图表开源库调研及使用示例
原文地址: Android图表开源库调研及使用示例 - Stars-One的杂货小窝 之前做的几个项目都是需要实现图表统计展示,于是做之前调研了下,做下记录 概述 AAChartCore-Kotlin ...
- 怎么在Android项目中导入ffmpeg库?
1.前言 在这里我以导入静态库(.a)为例进行分析,动态库(.so)是类似的.在导入前,各位要先编译好ffmpeg库,需要注意的是在编译的时候要开启交叉编译,目标平台为Android,其他平台的库(w ...
- MySQL运维5-Mycat配置
一.schema.xml 1.1 简介 schema.xml作为Mycat中最重要的配置文件之一,涵盖了Mycat的逻辑库.逻辑表.分片规则.分片节点即数据源的配置.主要包括一下三组标签 schema ...
- K8s 里如何优雅地使用 /dev/shm 实现容器间共享内存
目录 1. 从 docker run 的 --shm-size 参数聊起 2. Linux 里的 /dev/shm 3. Docker 对共享内存的支持 4. K8s 里如何设置 /dev/shm 大 ...
- dada的GCD ( jxnu acm新生选拔赛)
1007 dada的GCD,输入格式描述有误,已修正 dada的GCD Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/327 ...
- Android联系人增删改查
1:申请权限 <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-p ...
- Python笔记一之excel的读取
本文首发于公众号:Hunter后端 原文链接:Python笔记一之excel的读取 这里我常用的 python 对于 excel 的读取库有两个,一个是 xlsxwriter 用于操作 excel 的 ...
- 2023-12-30:用go语言,给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数, 如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列。 对于 0 <
2023-12-30:用go语言,给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数, 如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列. 对于 0 & ...
- Ubuntu 终端如何分割多个窗口
sudo apt-get install terminator 查看 ~/.config(隐藏文件夹 ctrl + h 即可看见) 下是否有 terminator 文件夹 如果没有手动创建一个 然后在 ...