美团测开校招一面2023年8月28日上午10点,美团测开校招一面,base 成都到店事业群。面了一个半小时,满头大汗的。=======当天下午2点打电话约29号晚上二面,速度还挺快的1.谈一下接口和抽象类的理解。2.访问控制符在接口和抽象类有什么异同?​ 抽象类可以用private,public,default(默认)和protected,都可以作用在抽象类的抽象和非抽象方法,抽象和非抽象变量。​ 在接口中,所有的方法都是public或者default的,如果方法是default的,则你需要给他实现。无法设置为protected和private,接口中所有的成员都是public static final的,你在定义的时候就必须初始化它。3.接口和抽象类可以有静态方法或者变量吗?​ 接口中可以有静态变量,而且接口中的变量就只能是public static final的,即默认就是静态的。4.抽象类里抽象方法和非抽象方法可以同时存在吗?​ 可以5.解释一下对static和final的理解6.一个类有一个成员变量,它的修饰符为public static final,请问它的值是在什么时候确定下来的呢?7.static变量和非static变量初始化的时机是怎样的?​ static变量都会在类第一次被加载到JVM(Java虚拟机)时初始化,非static变量在每次创建对象时进行初始化赋值8.一个类的static变量和非static变量在内存中的位置是一样的吗?​ 这里我回答错了,应该是static变量存储在方法区,与类的生命周期相同,被所有实例共享。非static变量存储在堆中,与对象的生命周期相同,每个实例都有自己的副本。9.谈一下编译时和运行时异常,举几个常见的运行时异常的例子​ 运行时异常:NullPointerException(空指针异常)IndexOutOfBoundsException(数组下标越界异常)ClassCastException(类型转换异常)ArrayStoreException(数据存储异常,操作数组时类型不一致)编译时异常:IOException(IO异常)SQLException(SQL异常)ClassNotFoundException(类没有找到异常)10.Arrays.asList(int[] arr)得到的list数组和我们一般使用的ArrayList数组一样吗?可以用同样的方法吗?如何正确转数组到list呢?Arrays.asList()方法返回的ArrayList实例与常规java.util.ArrayList不同。这里返回的实例是Arrays类的一个内部类,它并没有实现add()、remove()等修改集合大小的方法。因此,尝试调用这些方法会导致UnsupportedOperationException。该列表支持的主要操作包括:get(int index): 获取指定索引的元素。set(int index, E element): 修改指定索引的元素值。但是只能修改,不能添加或删除。size(): 获取列表大小。contains(Object o): 检查列表是否包含指定元素。indexOf(Object o): 返回指定元素的第一次出现的索引,或-1(如果列表不包含该元素)。lastIndexOf(Object o): 返回指定元素最后一次出现的索引,或-1(如果列表不包含该元素)。toArray(): 返回包含列表所有元素的数组。iterator(): 返回列表元素的迭代器。以下是一些示例:List<int[]> list = Arrays.asList(new int[]{1, 2, 3});list.get(0);  // 返回 int[] {1, 2, 3}// 抛出 UnsupportedOperationException// list.add(new int[]{4, 5, 6});// list.remove(0);如果你使用int[]数组作为参数,需要注意的是,Arrays.asList()将整个数组视为单一元素,返回的列表实际上只有一个元素,即该数组。总体而言,Arrays.asList()返回的列表主要用于对现有数组进行“视图级别”的操作,而不是作为通用的可变列表。如果你需要一个完全功能的ArrayList,应该使用其他方式来创建它,例如:List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));这样,list就是一个真正的ArrayList实例,支持add(), remove(), clear()等所有操作。11.讲一下你对Java中的Collection接口的理解。12.HashMap中的key和value可以为NULL吗?​ 都可以为NULL,如果key为NULL的话,会把这个entry放在数组的第一个位置,即做特殊处理。13.MySQL基本数据类型说一下14.MySQL中DateTime和TimeStamp的使用场景?有何区别?​ 这块答的不好,细节部分没有好好弄懂。MySQL中的DateTime和TimeStamp都用于表示日期和时间,但它们有几个重要的区别,导致它们适用于不同的使用场景。主要区别:存储范围:DateTime: 从1000-01-01 00:00:00到9999-12-31 23:59:59TimeStamp: 从1970-01-01 00:00:01UTC到2038-01-19 03:14:07UTC存储大小:DateTime: 占用8个字节TimeStamp: 占用4个字节时区支持:DateTime是时区无关的,存储的时间值不会随数据库或系统时区的改变而改变。TimeStamp是时区敏感的,存储为UTC时间,当读取TimeStamp字段时,MySQL会将其自动转换为当前时区的时间。使用场景:DateTime:当你想存储生日、节假日、特定事件的日期和时间时。当需要的日期范围超出TimeStamp限制(如历史日期或很远的未来日期)。当你不希望时间随系统时区改变而改变。示例:TimeStamp:用于记录事件发生的具体时间(如日志、修改时间等)。当需要存储时间,并且该时间需要随时区变化而自动调整。当空间是关注点,并且时间范围在TimeStamp允许的范围内。示例:可能的问题:时区问题:使用TimeStamp时,如果不正确地管理时区,可能会导致数据不一致。范围限制:TimeStamp有日期范围限制,不适用于存储早于1970年或晚于2038年的日期。综上所述,DateTime和TimeStamp都有其合适的使用场景,选择哪个类型取决于你的具体需求。注意时区和范围限制,以避免未预见的问题。15.SQL中DROP DELETE TRUNCAT的理解?​ 它们的执行速度哪个最快(DROP > TRUNCAT > DELETE)?哪些会释放表的空间(DROP > TRUNCAT > DELETE)?16.设计一下上传简历的设计用例,能想到多少就说多少。17.Integer和String的比较问题常见的Integer包装类缓存机制和String的字符串常量池,这个很多八股写的很细,这里就不写了。Integer缓存是-128~127,这个我回答错了。妈耶​ 还有就是漏掉了一个细节,字符串常量池从Java7开始就移到堆里了,不是方法区或者元空间里。18.如果HTTP请求上传文件时,上传的文件过大,会报什么样的错误码?413 Request Entity Too Large:这是最直接相关的HTTP状态码,表明请求实体(在这种情况下是文件)太大,服务器无法处理。如果服务器是Nginx,你可能会在Nginx配置文件中看到client_max_body_size设置,该设置限制了HTTP请求体的最大尺寸。对于Apache,你可能需要设置LimitRequestBody指令。(最常见的)400 Bad Request:虽然不是特定于文件大小,但某些情况下,服务器可能会简单地返回一个400错误,表示请求格式不正确。504 Gateway Timeout 或 408 Request Timeout:如果文件非常大,上传可能需要很长时间,从而导致超时。这并不直接与文件大小有关,但与文件上传的时间有关。500 Internal Server Error:这是一个非特定的错误代码,表示服务器遇到了错误。虽然不太可能,但如果服务器没有正确配置来处理大文件,可能会出现这个错误。502 Bad Gateway:如果你的应用程序使用了反向代理(如Nginx或Apache作为反向代理),且该代理未配置为支持大文件,你可能会看到这个错误。19.介绍一下502、504错误码,并分别介绍一下它们发生的场景。502 Bad Gateway描述"502 Bad Gateway"是一个HTTP状态码,表示一个服务器(不一定是Web服务器)作为网关或代理来操作,从尝试执行请求的上游服务器中接收到了一个无效的响应。场景与举例反向代理: 当你使用Nginx或Apache作为反向代理时,如果后端应用服务器(如Tomcat, Node.js服务等)未能返回有效响应或完全不响应,反向代理可能会返回502错误。比如,如果后端服务器崩溃了,或者因为配置问题无法接收请求。(见得最多的)网络问题: 如果网络连接有问题,例如DNS解析问题或防火墙设置不当,也可能导致502错误。负载均衡器: 在使用负载均衡器(如AWS的ELB)分发流量时,如果一个或多个后端服务器未能返回有效响应,负载均衡器可能会返回502错误。API请求: 当你的应用程序请求第三方API服务时,如果API服务未能返回有效响应,你的应用程序可能会收到502错误。比如,你有一个天气应用,依赖于一个天气API,但这个API服务暂时不可用。504 Gateway Timeout描述"504 Gateway Timeout"是一个HTTP状态码,表示一个服务器(不一定是Web服务器)没有及时从上游服务器或某些其他辅助服务器收到请求所需的响应。场景与举例反向代理: 当你使用Nginx或Apache作为反向代理时,如果后端服务器未能在指定时间内返回响应,反向代理可能会返回504错误。例如,你有一个复杂的数据库查询需要几分钟才能完成,导致超时。网络延迟: 网络传输延迟或分组丢失也可能导致504错误。例如,在高峰时段,网络拥堵可能导致请求或响应数据包被延迟或丢失。负载均衡器: 同样,在使用负载均衡器时,如果所有后端服务器都太忙,不能在一个合理的时间范围内处理请求,负载均衡器可能会返回504。API请求: 当你的应用程序请求第三方API服务时,如果API服务由于某种原因(例如,服务器过载或内部错误)未能及时响应,你的应用程序可能会收到504错误。长时间运行的操作: 如果你有一个需要长时间运行的操作,如大文件上传或复杂计算,而这个操作超过了服务器或代理设置的超时限制,你可能会遇到504错误。这两种错误码通常需要服务器管理员进行调查和修复,但了解它们可以帮助开发者更好地设计和调试应用。反问:1.base成都2.开发转测试需要学习什么呢?​ 进去之后会有专门的培训和学习,有一系列的培养方案,不用太担心,美团测开招招的是综合开发岗,所以开发的技能也是要用上的,这边测开是以开发为主的。3.到店SaaS的业务线有哪些?​ 主要是to B的,比如扫码点单,POS机,商家供应链体系,业务线会比较多。4.对我有什么建议?​ 有一些问题答错了,很正常,后面补一下就好。
点赞 21
评论 15
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务