由于本人马上要电面招银网络,所以从牛客、CSDN各个网站总结的招银面经问题(java开发/测试):
牛客最新面经:
2018年9月
第一个
1、机试做错的题可能会问
2、final的用法:可以用于三个地方,修饰类、类属性和类方法。被final修饰的类不能被继承,被final关键字修饰的类属性和方法不能被覆盖(重写)
3、循环单词的比较,形如abcd,bcda,cdab
4、有序队列的合并:用归并算法。
5、10000个数取前10个:堆排序构建堆过程
6、排序算法
7、基本数据类型:int、byte、short、long、、char、float、double、boolean
8、string和int转换:
9、类加载机制
10、线程同步、sychoronize和lock区别:sychoronize是一个修饰符,lock是接口
11、建索引的语句
12、大表查询优化
13、数据库连接:左连接右连接等
14、js数据类型:字符串、数字、布尔、数组、对象、Null、Undefined
15、spring权限控制:基于Spring AOP实现的数据权限。
16、springmvc请求流程
java岗位:
1、介绍项目
2、求最大子序列
3、加权二叉树
4、数据库
数据开发岗
1、msql怎么实现查找第100-200条数据
2、窗口函数中rank() dense_rank() 区别
3、mysql有哪些索引类型、有哪些锁
4、如果数据很多,又要保留很久,怎么在底层设计mysql
5、java堆和栈区别
6、什么时候GC
7、常见的包
8、数据库连接池怎么实现
9、JavaScript了解吗
测试开发岗
1自我介绍
2数据库视图
3数据库索引
4主键
5CS和BS架构的区别和优缺点
6 链表和数组区别,优缺点
7 数据库原子性
测开岗第二个
1、数据库中视图和游标的区别
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。
2、数据库中的几种联接方式,全连接
3、数据库的存储过程:实际上是预编译的sql过程。
4、数据库中事务的隔离级别
5、CS和BS架构区别,优缺点;
6、Linux中常用的命令
7、常用数据库有哪些?
网络、Http、html
cookie和session区别
session是web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪就是以上这两个,Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
1、谈谈对jvm的理解
个人见解:jvm是java的核心和基础,是在java编译器和os平台之间的虚拟处理器。即java编译器只需要将源码编译成jvm能理解的代码或者字节码即可,至于和os平台之间,就是jvm需要做的事情了。通过这个环境可以很好的实现跨平台的特性。
举个小例子就是在javac编译时会生成.class文件。这些class文件是通过java编译器实现的,最后交由jvm来解析。
jvm类加载过程:加载、验证、准备、解析、初始化、使用、卸载。
2、java程序初始化顺序
在一个java程序中,有类、成员、构造函数、代码块、方法等。
他们的顺序基本为:静态优于非静态、成员变量优于方法和块、父类优于子类。
总结起来为:父类静态变量-->父类静态块-->子类静态变量--->子类静态块--->父类非静态变量-->父类非静态块-->父类构造方法-->子类非静态变量-->子类非静态块--->子类构造方法
3、线程的创建:
三种方式:A继承Thread类,重写该类的run方法,创建Thread子类的实例,调用线程对象start启动线程
B实现Runnable接口,重写该类的run方法,以此实例创建线程对象,调用start方法启动线程
C通过callable和Future创建线程,实现call方法
时间允许的话,分析一下三者的优劣
4、mysql主键和唯一索引的区别
唯一索引用UNIQE定义,保证数据记录的唯一性。
主键是一种特殊的唯一索引,用来标识唯一一条数据,用Primary Key创建。
5、如何实现session共享,用redis如何实现
通常情况下,tomcat、jetty等servlet容器会默认将session存在内存中,但是这个不利于扩展。Redis 是一个key-value数据库,可以将session统一存在redis中进行管理。如果项目是基于spring框架开发的,只需要对项目进行配置即可。主要配置项:maven依赖、filter配置、spring配置文件。
6、说说微服务
微服务就是为了解决一个业务系统太大~太繁琐~太笨重~太复杂,我们把业务系统拆分成了多个独立的小应用去开发。在多个小应用之间就可以通过服务完成沟通。每一个小应用都可以独立完成一个业务,同时还可以把自己的服务给其他的应用去消费。
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
另一个博客:
java基本知识:
1、接口和抽象类的区别。
从两方面分析,语法方面的区别和设计层面的区别。
2、重载重写
重载时有几个不同,方法重载时参数名称不同,类型不同,参数个数不同即可构成重载。
重写常常被用于继承。比如说按map的value进行比较,需要重写compare方法。
3、控制反转和依赖注入:
这是一设计思想。IOC意味着将设计好的对象交给容器控制管理,而不是传统的在你对象内部的直接控制。很好体现了面向对象,由IoC容器帮对象找相应的依赖对象并注入。
谁依赖谁?为什么需要依赖?谁注入谁?注入了什么?
可以用找女朋友的例子打比方。通过婚介所找对象就是IoC。把创建对象的事情都交个spring,由他统一管理。
4、依赖注入的几种方式,
A、setter方法注入
B、构造器注入
C、接口注入
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
第三个博客:17年9月
分为两个部分:
Part1:介绍项目
Part2:问题:
1、说下进程与线程的区别
进程:CPU进行资源分配和管理的最小单位
线程:CPU进行调度的最小单位。
进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。
2、说说JVM
JVM是java比较核心的东西,它实际上就是建立了一个虚拟环境,使得os与java编译器之间能够相互进行交流。主要包括内存模型、垃圾回收机制类加载机制
内存模型主要是堆区和栈区、程序计数器、方法区。
垃圾回收:垃圾的定义:引用计数和可达性分析。垃圾回收的方法有标记-清楚算法、复制算法、标记整理、分代收集。
3、说说线程创建的方式
三种
4、说说集合类框架
collection和map。及其下的实现类。
5、spring框架
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
第四个:应该是现场面试
1、主要用什么语言开发?Java
关于C、C++的问题:C语言的单链表和双向链表有什么区别?
跳跃表有没有听说过?自然是不知道
java有内存回收的机制,C没有,知道什么时候会出现野指针,什么时候会出现内存泄露吗?
有用过什么数据结构?写过简单的反转链表、两个栈实现队列,
二叉树的遍历有哪几种?前序中序后序
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
16年9月面经
1、讲项目
2、瀑布模型的几个阶段
3、如何实现环形队列
4、内连接和外连接及交叉连接。
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
2018年9月
1、数据库连接的方式?
方法一是java原生的jdbc ;方法二是利用properties。配置文件的形式利用java原生的jdbc进行连接;方法三是利用c3p0-config.xml配置文件形式,利用c3p0配置文件设置连接池进行连接;方法四利用dbcp.properties配置文件形式;方法5利用mybatis-config.xml配置文件形式;方法6利用hibernate.cfg.xml配置文件形式
2、用什么数据结构去存数据库连接池?
预先在缓冲池中放入一定数量的连接。用队列的形式存储连接池。。java中可以用Vector、Stack
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
2016年9月
1、在java中进行数据库连接并操作数据的?最后需要进行什么操作?
2、项目中使用jquery,那么on、bind、live、delegate这几个函数有什么区别?
3、一个http请求所包含的数据格式是什么?
请求行+请求头+数据体
4、一次http请求的详细处理过程?
三次握手1建立TCP连接 2Web浏览器向web服务器发送请求命令 3web浏览器发送请求头信息 4web服务器应答 5web服务器发应答头信息。6发送实际数据。 7web服务器关闭TCP连接
5、一次struts处理请求从开始到看到页面数据之间都发生了什么,整个详细过程?
6、项目中都用到了什么框架?(spring+spring mvc+mybatis)
7、在自己的项目中有没有用到并发?如果让你现在考虑给你的项目中考虑并发你会怎么做?你要控制(进行同步)的数据源是哪些?
-------------------------------------------------------------------华丽分割线---------------------------------------------------------------------------
未完。。