美团一面7.28上午 11点
Java基础
1.eaquels和hashcode的区别和用法
2.深拷贝和浅拷贝,如何实现深拷贝
3.软引用和弱引用,弱引用什么时候用
4.内部类和匿名内部类
5.java的网络请求方式
6.stringbuilder和stringbuffer的区别
7.hashmap的实现原理和put的方式
8.给20个容量,如何设置初时容量
9.怎么向文件中追究内容
10.字节流和字符流的区别
11.接口和抽象类的区别
12.arraylist和linkedlist的区别
多线程
1.wait和sleep的区别
2.wait如何获取锁
3.线程池分配线程的过程
框架
1.前面项目问了很多spring的框架
2.spring mvc说一下
3.说一下mvc模型
4.model是否直接操作数据库的
数据库
1.一道sql题,统计平均分大于90的班级名称
select classname from table group by classname having avg(score)>90
JVM
1.jvm的垃圾回收机制
2.cms与g1
手撕代码
手写代码,求文件内的的.txt文件结尾的个数,一开始说是总个数,后来改为单个文件夹中的个数。
-
- import java.io.File;
-
- public class t6 {
- //static int count;
- public static void main(String[] args) {
- //取得目标目录
- File file = new File("E:\\秋招\\面试宝典");
- //获取目录下子文件及子文件夹
- //File[] files = file.listFiles();
-
- int readfile = readfile(file);
-
- }
-
- public static int readfile(File files) {
- // if (files == null) {// 如果目录为空,直接退出
- // return 0;
- // }
- //先判断是否是文件夹
- if(files.isDirectory()){
- File []files1 = files.listFiles();
- //用于记录当前文件夹中的.txt个数
- int count = 0;
- for(File f:files1) {
- count += readfile(f);
- }
- System.out.println("当前文件夹有多少个:"+count);
- }else{
- //说明不是文件夹是文件,如果是以.pdf结尾的就直接返回1
- if(files.getName().endsWith(".pdf")){
- return 1;
- }
- }
- //既不是文件夹也不含.txt文件
- return 0;
- }
- }
二面 8.2号 晚上8点
1.自我介绍
2.自己从项目中学到什么?
3.自己在项目中遇到的问题,怎么看别人的代码?
4.计算机网络和os基础了解哪些?
5.说说进程和线程的区别
6.我们来做几道编程题吧
(1)最长不含重复字符的子字符串
- class Solution {
- public int lengthOfLongestSubstring(String s) {
- int length = s.length();
- if(length == 1) return 1;
- Map
result = new HashMap<>(); - int i = -1, res = 0;//i注意从-1开始
- for(int j = 0; j < s.length(); j++) {
- if(result.containsKey(s.charAt(j)))//说明已经出现过
- i = Math.max(i, result.get(s.charAt(j))); // 更新左指针 i
- result.put(s.charAt(j), j); // 哈希表记录
- res = Math.max(res, j - i); // 更新结果
- }
- return res;
- }
- }
(2)最长公共子串
-
- import java.util.*;
-
-
- public class Solution {
- /**
- * longest common substring
- * @param str1 string字符串 the string
- * @param str2 string字符串 the string
- * @return string字符串
- */
- public String LCS (String str1, String str2) {
- // write code here
- /*最长公共子串 采用动态规划*/
- int m = str1.length(),n = str2.length();
- int[][] dp = new int[m][n];
- int indexMax = 0,maxLen = 0;
- for(int i = 0; i < m; ++ i){
- for(int j = 0; j < n; ++j){
- if(str1.charAt(i) == str2.charAt(j)){
- if(i == 0 || j == 0){
- dp[i][j] = 1;
- }else{
- dp[i][j] = dp[i - 1][j - 1] + 1;
- }
- }//else 是str1[i]!=str2[j]的情况,这种情况下dp[i][j]=0,由于初始化已经将其设置为0,所以这里不再写。
-
- //处理完dp[i][j]之后,查看一下是否需要记录下来
- if(maxLen < dp[i][j]){
- maxLen = dp[i][j]; //记录下最长公共子串的长度
- indexMax = i; //记录下出现“最长公共子串”时的末尾字符的位置
- }
- }
- }
- if(maxLen == 0) return "-1";
- //字符串截取的长度有(end-start+1) = maxLen, 那么start = indexMax +1-maxLen
- // maxLen即为所截取的字符串的长度。
- return str1.substring(indexMax - maxLen + 1 , indexMax + 1);
- }
- }
小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。如果在阅读过程中有疑问,请留言讨论,最后祝愿各位顺利拿到心仪的offer。