美团提前批安卓一二面,已挂!
美团一面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(".txt")){ 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<Character, Integer> 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); } }
害,发帖前害期待一波hr面,结果刚刚收到感谢信!
自己一直投的是后端,可能自己没有安卓的经验吧,给挂掉了!!! 秋招继续刚这个部门!!!