• 【Java后端】美团提前批一面和二面面经!


    美团一面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文件结尾的个数,一开始说是总个数,后来改为单个文件夹中的个数。

    1. import java.io.File;
    2. public class t6 {
    3. //static int count;
    4. public static void main(String[] args) {
    5. //取得目标目录
    6. File file = new File("E:\\秋招\\面试宝典");
    7. //获取目录下子文件及子文件夹
    8. //File[] files = file.listFiles();
    9. int readfile = readfile(file);
    10. }
    11. public static int readfile(File files) {
    12. // if (files == null) {// 如果目录为空,直接退出
    13. // return 0;
    14. // }
    15. //先判断是否是文件夹
    16. if(files.isDirectory()){
    17. File []files1 = files.listFiles();
    18. //用于记录当前文件夹中的.txt个数
    19. int count = 0;
    20. for(File f:files1) {
    21. count += readfile(f);
    22. }
    23. System.out.println("当前文件夹有多少个:"+count);
    24. }else{
    25. //说明不是文件夹是文件,如果是以.pdf结尾的就直接返回1
    26. if(files.getName().endsWith(".pdf")){
    27. return 1;
    28. }
    29. }
    30. //既不是文件夹也不含.txt文件
    31. return 0;
    32. }
    33. }

     

    二面 8.2号 晚上8点

    1.自我介绍

    2.自己从项目中学到什么?

    3.自己在项目中遇到的问题,怎么看别人的代码?

    4.计算机网络和os基础了解哪些?

    5.说说进程和线程的区别

    6.我们来做几道编程题吧

    (1)最长不含重复字符的子字符串

    1. class Solution {
    2. public int lengthOfLongestSubstring(String s) {
    3. int length = s.length();
    4. if(length == 1) return 1;
    5. Map result = new HashMap<>();
    6. int i = -1, res = 0;//i注意从-1开始
    7. for(int j = 0; j < s.length(); j++) {
    8. if(result.containsKey(s.charAt(j)))//说明已经出现过
    9. i = Math.max(i, result.get(s.charAt(j))); // 更新左指针 i
    10. result.put(s.charAt(j), j); // 哈希表记录
    11. res = Math.max(res, j - i); // 更新结果
    12. }
    13. return res;
    14. }
    15. }

    (2)最长公共子串

    1. import java.util.*;
    2. public class Solution {
    3. /**
    4. * longest common substring
    5. * @param str1 string字符串 the string
    6. * @param str2 string字符串 the string
    7. * @return string字符串
    8. */
    9. public String LCS (String str1, String str2) {
    10. // write code here
    11. /*最长公共子串 采用动态规划*/
    12. int m = str1.length(),n = str2.length();
    13. int[][] dp = new int[m][n];
    14. int indexMax = 0,maxLen = 0;
    15. for(int i = 0; i < m; ++ i){
    16. for(int j = 0; j < n; ++j){
    17. if(str1.charAt(i) == str2.charAt(j)){
    18. if(i == 0 || j == 0){
    19. dp[i][j] = 1;
    20. }else{
    21. dp[i][j] = dp[i - 1][j - 1] + 1;
    22. }
    23. }//else 是str1[i]!=str2[j]的情况,这种情况下dp[i][j]=0,由于初始化已经将其设置为0,所以这里不再写。
    24. //处理完dp[i][j]之后,查看一下是否需要记录下来
    25. if(maxLen < dp[i][j]){
    26. maxLen = dp[i][j]; //记录下最长公共子串的长度
    27. indexMax = i; //记录下出现“最长公共子串”时的末尾字符的位置
    28. }
    29. }
    30. }
    31. if(maxLen == 0) return "-1";
    32. //字符串截取的长度有(end-start+1) = maxLen, 那么start = indexMax +1-maxLen
    33. // maxLen即为所截取的字符串的长度。
    34. return str1.substring(indexMax - maxLen + 1 , indexMax + 1);
    35. }
    36. }

    小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。如果在阅读过程中有疑问,请留言讨论,最后祝愿各位顺利拿到心仪的offer。

     

  • 相关阅读:
    数字滤波器分析---相位响应
    安装依赖报错
    快收藏!最适合计算机大学生的Java毕业设计项目--高校食堂点餐系统
    Spark 6:Spark SQL DataFrame
    flutter生态一统甜夏 @Android @ios @windowse @macos @linux @Web
    HTML5期末大作业 基于HTML+CSS+JavaScript学校官网首页
    LoRa技术的常见应用有哪些?
    iptables 源地址、目标地址转换
    Java工具类-Jdbc工具类
    Webmin--一个用于Linux基于Web的系统管理工具
  • 原文地址:https://blog.csdn.net/m0_72444380/article/details/126161427