菜鸟补给站 - -Java 常见笔试题
目录
( 一 )写一个算法统计出一个字符串中某子串出现的次数。(注意,目标字符串不一定有逗号)
( 二 )以下代码的输出结果是什么: -- Java内存管理
( 三 )有数列:1 1 2 3 5 8 13 21....,请写出算法求出第30个数字
( 四 )以下程序的运行结果是:考察点:创建子类对象,先调用父类的构造方法,再调用子类的构造方法
(五)请写出代码完成对HashMap map = new HashMap()中元素的遍历。(可以写多种方式),string>,string>
Map集合的特点:
使用增强for循环实现
使用lambda表达式遍历
( 六 )数据库例题
分别创建三张表 表结构如下
业务场景限制:
题目:
( 一 )写一个算法统计出一个字符串中某子串出现的次数。(注意,目标字符串不一定有逗号)
- 如字符串“hello world, hello eclipse, hello idea, hello spring”,统计出“hello”出现的次数
public class SubStringCount {public static void main(String[] args) {String dest = "hellohello world, hello eclipse, hello idea, hello spring";String subStr = "hello";int count = 0; //计数器int index = -1; //表示从目标串哪个位置开始查找;也表示查找到目标子串出现的下标//若目标子串出现,则计数器+1,且index下标值后要后移到目标串出现的下一个字符去while((index=dest.indexOf(subStr,index))!=-1){//计数器+1count ++;//index索引后移到出现的子串的下一个字符index += subStr.length();}System.out.println(count);}
}
( 二 )以下代码的输出结果是什么: -- Java内存管理
class T{public static void main(String[] args){String str = "ok";char[] chs = {'g','b','k'};T t = new T();t.change(str,chs);System.out.println(str);System.out.println(Arrays.toString(chs));}public void change(String str,char[] chs){str = "hello";chs[0] = 'a';
}
//输出结果//str: ok
// chs: a b k
解析:
( 三 )有数列:1 1 2 3 5 8 13 21....,请写出算法求出第30个数字
斐波那契数列(Fobonacci)---考点:递归
递归:是一种思想,应用在代码方面体现为:方法调用方法本身
递归经典算法: 斐波那契数列; 求阶乘 ;链表底层也是递归实现的
package cn.tedu.interview.day02;/*** 求出第30个位置的值,斐波那契数列,考察递归*/
public class Fabonacci {public static void main(String[] args) {//求出第30位的值Fabonacci fabonacci = new Fabonacci();int x = fabonacci.fn(30);System.out.println(x);}//求出某个位置的值 参数n:位置public int fn(int n){if(n==1 || n==2){return 1;}return fn(n-1)+fn(n-2);}
}
( 四 )以下程序的运行结果是:考察点:创建子类对象,先调用父类的构造方法,再调用子类的构造方法
public class Person{public Person(){System.out.println("superclass");}
}
public class Teacher extends Person{public String name = "jack"; //这里是publicpublic Teacher(){System.out.println("subclass");}public static void main(String[] args){Teacher teacher = new Teacher();System.out.println(teacher.name);}
}//superclass
//subclass
//jack
//通过debug查看执行过程,super()会出现在构造方法的第一行代码,无论写或不写,都存在;
//注意:若在构造方法中显示的调用父类的有参构造方法,此时super()不会默认提供
(五)请写出代码完成对HashMap<String,String> map = new HashMap<String,String>()中元素的遍历。(可以写多种方式)
public static void main(String[] args) {Map<String,String > map = new HashMap<>();map.put("语文","90");map.put("数学","80");map.put("英语","70");map.put("物理","89");//如何从map集合中取元素---- 通过key值取value值,通过get方法实现//1. 使用增强for循环来遍历for (Map.Entry<String,String> entry:map.entrySet()) {System.out.println(entry.getKey()+"-"+entry.getValue());}//2. 可以使用lambda表达式来遍历map.forEach((k,v)-> System.err.println(k+":"+v));List<String> list = new ArrayList<>();list.add("tom");list.add("jack");list.add("rose");//list遍历--lambdalist.forEach(str-> System.err.println(str));}
Map集合的特点:
- HashMap的map集合是无序的
- LinkedHashMap是有序的
使用增强for循环实现
使用lambda表达式遍历
lambda表达式:
语法: ()->{}
用法:
用于实现一些功能性接口(接口内部之后一个抽象方法)--替换一部分的匿名内部类
Runnable接口 -- 功能性接口 -- run()
1. 使用匿名内部类来实现该接口Runnable r = new Runnable(){public void run(){....//任务}}new Thread(r).start();2. Runnable r = ()->{//任务};new Thread(r).start();
lambda表达式各部分意义:
( ):表示重写的方法的参数列表:
若无参,什么都不写
若有参,参数类型都可以省略,且若参数列表只有一个参数,此时()也可以省略
若有多个参数,参数类型可以省略,此时()不可以省略
{ }:表示重写的方法体
遍历集合:
可以遍历list,set,map集合,lambda表达式之所以能对三种集合进行遍历,是因为三种集合提供了对lambda的支持(提供的方法:forEach())
( 六 )数据库例题
分别创建三张表 表结构如下
班级表(class) 学生表(student)
编号 | 班级名称 |
---|---|
id ( int ) | class_name (varchar) |
1 | 一班 |
2 | 二班 |
3 | 三班 |
4 | 四班 |
5 | 五班 |
编号 | 学号 | 姓名 | 性别 | 所属班级 ( |
---|---|---|---|---|
id (int) | stu_no (varchar) | stu_name (varchar) | stu_gender (varchar) | class_id (int) |
1 | 2020001 | 张三 | 男 | 1 |
2 | 2020002 | 李四 | 男 | 1 |
3 | 2020003 | 李丽 | 女 | 2 |
4 | 2020004 | 赵婷 | 女 | 3 |
5 | 2020005 | 王五 | 男 | 3 |
成绩表(score)
学生 | 语文 | 数学 |
---|---|---|
stu_id ( int ) | chinese ( int ) | math( int ) |
1 | 70 | 47 |
2 | 80 | 60 |
3 | 50 | 82 |
4 | 80 | 90 |
业务场景限制:
一个班级有多名学生,一名学生只属于一个班级 学生有可能没有成绩
创建表
CREATE TABLE class(
id int,class_name varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
CREATE TABLE student(
id int,stu_no varchar(20),
stu_name varchar(20),stu_gender varchar(20),class_id int
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
CREATE TABLE score(
stu_id int,chinese int,math int
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
插入数据
INSERT INTO class VALUES(1,'一班'),(2,'二班'),(3,'三班'),(4,'四班'),(5,'五班');
INSERT INTO student VALUES(1,'2020001','张三','男',1);
INSERT INTO student VALUES(2,'2020002','李四','男',1);
INSERT INTO student VALUES(3,'2020003','李丽','女',2);
INSERT INTO student VALUES(4,'2020004','赵婷','女',3);
INSERT INTO student VALUES(5,'2020005','王五','男',3);
INSERT INTO score VALUES(1,70,47),(2,80,60),(3,50,82),(4,80,90);
题目:
查询所有人(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数,数学分数)
多表联查(关联查询):内连接查询,左外连接查询,右外连接查询,自连接查询
注意:
多表查询中要查询的字段若是唯一存在,那么可以不写表名.字段,可以直接写字段名
SELECT stu_no,stu_name,stu_gender,class_name,chinese,math FROM student stu JOIN class c ON stu.class_id=c.id LEFT JOIN score sc ON stu.id = sc.stu_id;
查询语文分数比“张三”高的学生(学号,姓名,性别,班级名称,语文分 数)
1.分析 确定三表查询 确定连接条件 确定查询条件
SELECT stu_no 学号,stu_name 姓名,stu_gender 性别,class_name 班级名称,chinese 语文分数 FROM student stu JOIN class c ONstu.class_id = c.id JOIN score sc ON sc.stu_id =stu.id WHEREchinese > (SELECT chinese FROM student stu JOINscore sc ONstu.id=sc.stu_id WHERE stu.id=1 );
3.查询各科都合格(分数>=60)的学生(学号,姓名,语文分数,数学分数)
分析 1,根据查询字段 确定查询表 2,连接条件 3. 查询条件
SELECT stu_no 学号,stu_name 姓名,chinese 语文分数,math 数学分数 FROM student stu JOIN score sc ON stu.id = sc.stu_id WHERE chinese>=60 AND math>=60;
4.查询班级人数>=2的班级(班级编号,班级名称,人数)
分析 根据查询字段 确定表 class,student, 根据班级来进行分组 ,统计学生人数
注意: 查询结果count( )作为查询条件来使用,count 函数会使用 group by ,再次根据分组的结果进行条件进行查询
,应该使用having 关键字来进行分组后的数据进行筛选
分组 group by 用法: 分组通常和聚合函数配合使用 ( count,avg,sum,max,min)
SELECT c.id 班级编号,class_name 班级名称,count(*) 人数
FROM student stu JOIN class c
ONstu.class_id = c.id
GROUP BY stu.class_id
HAVING COUNT(*)>=2;
菜鸟补给站 - -Java 常见笔试题相关推荐
- java字符串笔试题_五道Java常见笔试题及答案汇总
1.String和StringBuffer的区别? 答:Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数 ...
- Java 常见笔试题(转载)
final,finally和finalize总结 在某笔试题中看到,昨天复习了下JAVA后整理一下. final可以添加的位置有三个:class之前,变量前,成员方法前. 最常见的是在变量前如: fi ...
- java常见面试题——java常见笔试题
注:转载自http://www.cnblogs.com/yhason/archive/2012/05/08/2489932.html,版权归其所有! 5.String是最基本的数据类型吗? 基本数据类 ...
- Java基础学习总结(74)——Java常见笔试题及答案汇总
1. 下面哪些是合法的标识符?(ABE )--标识符 A. $persons B. TwoUsers C. *point D. this E. _endline 2. 下面程序运行的结果是( D )- ...
- Java 面试/笔试题神整理 [Java web and android]
Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...
- java面试笔试题大汇总
java面试笔试题大汇总 JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题 ...
- Java面试笔试题大汇总一(最全+详细答案)
Java面试笔试题大汇总二(最全+详细答案)https://www.jianshu.com/p/f5120f1b75be Java面试笔试题大汇总三(最全+详细答案)https://www.jians ...
- mysql @ $_mysql常见笔试题
一.Mysql常见笔试题 1.Mysql 中有哪几种锁? (1)表级锁:开销小,加锁快.不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发度低. (2)行级锁:开销大,加锁慢.会出现死锁,锁定粒度小, ...
- 2019 java 京东笔试题
想进京东的同学注意了,这里是修真院面试笔记整理,那么这里就给大家分享一下 [2019 java 京东笔试题] JVM的内存结构和管理机制: JVM实例运行 JVM实例消亡 JVM的生命周期 JVM的内 ...
最新文章
- Newtonsoft.Json.dll 本地调用正常,服务器调用不正常
- 跟我学Springboot开发后端管理系统3:Mybatis-Plus实战2
- Gartner:解开关于人工智能的六个迷思
- 如何理解delegate (委托)设计模式
- 每天一道LeetCode-----计算n的阶乘末尾有多少个0
- BootStrap笔记-img相关
- 牧马人鼠标g13鼠标宏_经典再升级:达尔优牧马人五代游戏鼠标
- 米筐量化不支持c语言_从零开始学量化(三):数据获取途径
- 如何寻找互联网红利期产品?
- Atitit opencv3.0 3.1 3.2 新特性attilax总结
- 安装双系统(ubantu和window10)失败后,如何找回数据及格式化被加密的U盘
- 车牌检测License Plate Detection and Recognition in Unconstrained Scenarios
- 针对PVS方式的VDI部署趋势杀毒优化方法
- 码农慌不慌?只因写了一段爬虫,大数据公司200多人被抓!
- 三角(Triangle)
- 一个HTTP打趴80%面试者
- PS中去掉图片周围的无用白色区域
- 總結——關於2017 11 3測試的分析總結
- Lora中信息码片,编码率解释
- ubuntu下给firefox安装flash插件
热门文章
- 2021年安全生产监管人员复审考试及安全生产监管人员作业模拟考试
- 基于条码的库存管理系统
- 不用取色器快速获取颜色的RGB
- 从立创商城导出,在AD中生成集成库笔记
- Flash入门对AS语言的一些理解
- Linux(Ubuntu 21) 虚拟机安装
- 【电力运维】浅谈电力通信与泛在电力物联网技术的应用与发展
- python测试管理平台_Python + flask+ selenium 自动化测试用例管理、执行平台
- 【手把手AI项目】八、MobileNetSSD通过Ncnn前向推理框架在Android端的使用--Cmake编译(目标检测 objection detection)
- 中艺网校修图师学习笔记L1