面试2

阅读: 评论:0

面试2

面试2

前言

其实大多数人,刚开始面试的遭受的基本上是打击。面试官问的问题,你一问三不知。又或者面试不按套路出牌。这些都让你措手不及。但是,一旦你在面试的时候表现得卑微无知,你也就输了。

场景还原

面试来源:boss直聘
面试公司:XXX软件科技有限公司
面试形式: 笔试->面试
当前进度:完结
面试难度:三颗星
面试体验:颇有收获
笔试内容:

你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有
N名学生在上课。游戏的规则是:
你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。
I.让所有学生拍成一队,然后按顺序报数。
II.学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz;如果所 报数字是第三个特殊数(7)的倍数,那么要说Whizz。
III.学生报数时,如果所报数字同时是两个特殊数的倍数情况下,也要特殊处理,比如第一个特殊数和第二个特殊数的倍数,那么不能说该数字,而是要说FizzBuzz, > 以此类推。如果同时是三个特殊数的倍数,那么要说FizzBuzzWhizz。
IV.学生报数时,如果所报数字包含了第一个特殊数,那么也不能说该数字,而是要说相应的单词,比如本例中第一个特殊数是3,那么要报13的同学应该说Fizz。如果数字中包含了第一个特殊数,那么忽略规则3和规则4,比如要报35的同学只报
Fizz,不报BuzzWhizz。
现在,我们需要你完成一个程序来模拟这个游戏,它首先接受3个特殊数,然后输出N名学生应该报数的数或单词。比如,
输入
3,5,7
输出(片段)
1
2
Fizz
4
Buzz
Fizz
Whizz
8
Fizz
Buzz
11
Fizz
Fizz
Whizz
FizzBuzz
16
17
Fizz
19
Buzz
…
一直到N
import org.junit.Before;
import org.junit.Test;import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;public class Application {public static void main(String[] args) {Application application = new Application();System.out.print("请输入学生人数:");Scanner scanner = new Scanner(System.in);int i = Int();System.out.println("======请输入三个特殊数======");Scanner scanner1 = new Scanner(System.in);String[] strs = ().split(",");List<Integer> list = new ArrayList<>();Arrays.asList(strs).forEach(v->{list.add(Integer.parseInt(v));});stBefore();hod1(i,list);System.out.println("======执行结果请查看文件======");}@Beforepublic void testBefore(){File file = new File(&#");ists()) {if (!file.delete()) {System.out.println("执行错误");}}}@Testpublic void test(){Integer[] args = {3,5,7};method1(40,Arrays.asList(args));}private void method1(int studentNum,List<Integer> list){try(FileOutputStream fos = new FileOutputStream(&#", true)) {for (int i = 1; i <= studentNum; i++) {String result = "";result = dao.rules1(result, i, list);result = dao.rules2(result, i);result = dao.rules3(result, i ,list);result += "rn";fos.Bytes());}} catch (Exception e) {System.out.println("执行异常");}}private RulesDao dao = new RulesDao();}
import java.util.List;/*** 规则接口*/
public interface Rules {String rules3(String result, int i, List<Integer> list);String rules1(String result, int i, List<Integer> list);String rules2(String result, int i);
}
import java.util.List;/*** 规则实现类*/
public class RulesDao implements Rules{public String rules3(String result, int i, List<Integer> list){if (String.valueOf(i).contains(String.(0)))) {result = "Fizz";}return result;}public String rules1(String result, int i, List<Integer> list){if (i % (0) == 0) {result += "Fizz";}if (i % (1) == 0) {result += "Buzz";}if (i % (2) == 0) {result += "Whizz";}return result;}public String rules2(String result, int i){if ("".equals(result)) {result = String.valueOf(i);}return result;}
}

面试内容:

1.前台于后台数据如何交互的?
答:在后台,我们使用Controller注解或者RestController定义控制器用来接收前端数据并处理返回给前端页面,使用RequestMapping注解是一个用来处理请求地址映射。
我们一般使用HttpRequestServlet、HttpResponseServlet接口或者RequestParams、RequestBody、PathVariable注解接收请求参数并返回指定格式的数据。
@Controller 注解的 Controller 类中的函数可以返回具体的页面。比如直接返回的 String 类型的Jsp、Html 页面名字,或者通过 ModelAndView.setViewName() 来指定页面名字。
@RestController 注解的类,其中的函数不可以返回页面路径,只可以返回具体的结果值,比如查询完的对象、对象列表,最终呈现出来就是常用的 Json 等类型的值。
HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据。
同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息
HttpServletResponse接口用于在Servlet中响应一个请求。设置响应的类型可以使用setContentType()方法。发送字符数据,可以使用getWriter()返回一个对象。
@RequestMapping注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上,设置请求路由和请求方法。
@RequestParam 注解配合 @RequestMapping 一起使用,可以将请求的参数同处理方法的参数绑定在一起。
@RequestParam 注解使用的时候可以有一个值,也可以没有值。这个值指定了需要被映射到处理方法参数的请求参数
@PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中2.如何理解序列化和持久化?
序列化可以将一个复杂的对象转化为一维的数据,而这为持久化提供了很大的方便,因为文件就是一维的,将一维的东西写入文件自然比较方便。
久化是个很宽泛的概念,可以是写入文件,也可以是存入数据库,写入注册表等多种方式。3.mysql优化?
答:mysql优化,其实就是保证索引不会失效。
表关联查询时务必遵循 小表驱动大表 原则;
使用查询语句 where 条件时,不允许出现 函数,否则索引会失效;
使用单表查询时,相同字段尽量不要用 OR,因为可能导致索引失效,比如:SELECT * FROM table WHERE name = '手机' OR name = '电脑',可以使用 UNION 替代;
LIKE 语句不允许使用 % 开头,否则索引会失效;
组合索引一定要遵循 从左到右 原则,否则索引会失效;比如:SELECT * FROM table WHERE name = '张三' AND age = 18,那么该组合索引必须是 name,age 形式;
索引不宜过多,根据实际情况决定,尽量不要超过 10 个;
每张表都必须有 主键,达到加快查询效率的目的;
分表,可根据业务字段尾数中的个位或十位或百位(以此类推)做表名达到分表的目的;
分库,可根据业务字段尾数中的个位或十位或百位(以此类推)做库名达到分库的目的;
表分区,类似于硬盘分区,可以将某个时间段的数据放在分区里,加快查询速度,可以配合 分表 + 表分区 结合使用;4.微信支付,如果用户已完成支付,但后台服务挂掉了怎么处理?
微信提供了一个查询接口负责所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。

本文发布于:2024-01-31 09:30:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170666464227545.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23