八股文面试day5

测试即(验证产品特性是否符合用户需求、检测系统是否能满足客户需求,是否能正常运行,数据会有没有正确)

测试流程就是:需求评审,编写测试计划,设计测试用例,执行测试用例,bug的提报与验证,测试报告

开发测试冲突:双方对需求理解不一致,可以问产品达成一致,产品是最懂项目需求的人

对项目做过什么测试:功能测试接口测试兼容测试

讲一下面向对象是什么?

网络编程了解吗?讲一下TCP,UDP的特性

讲一下多线程安全问题

讲一下哈希表的实现过程

SpringBoot的启动流程

Spring Boot的启动流程如下:

  1. 加载Spring Boot的启动类:Spring Boot应用的入口是一个标注有@SpringBootApplication注解的类。该注解会自动扫描并加载所有标注有@Component、@Controller、@Service、@Repository等注解的类。

  2. 创建Spring应用上下文:通过SpringApplication类的静态方法run()创建Spring应用上下文。该方法会根据配置信息加载并初始化所有的Bean,并创建Bean之间的依赖关系。

  3. 执行Spring Boot的自动配置:Spring Boot会根据classpath下的配置文件(如application.properties或application.yml)自动配置应用的各个组件。自动配置使用了条件注解(@Conditional)来根据条件选择是否配置某个组件。

  4. 启动内嵌的Web服务器:Spring Boot支持内嵌的Web服务器,如Tomcat、Jetty等。根据配置信息,Spring Boot会自动选择并启动相应的Web服务器。

  5. 运行应用程序:Spring Boot会扫描并加载所有标注有@Controller、@RestController等注解的类,并根据请求路径和请求方法映射到相应的处理方法。

总结起来,Spring Boot的启动流程包括加载启动类、创建应用上下文、执行自动配置、启动内嵌的Web服务器和运行应用程序。这些步骤使得Spring Boot应用能够快速、简单地启动和运行。

实时操作系统和非实时操作系统的区别

冒烟测试

B站比特大博哥

公司(九毛九餐饮、CVTE视源股份、多益网络、字节、科大讯飞、TPlink、美团、滴滴)

1.在浏览器中输入https://www.wind.com.cn,其中https代表什么

A.地址                               B.资源                             C.协议                               D.主机

http://www.jianshu.com/index.html?name=zhangsan&age=25#dowell

协议  域名   路径   查询参数   锚点 复制代码

2.无符号二进制数1000110转换为十进制数是多少

A.68                                  B.70                                C.72                                  D.74

3. 下列关于OSI参考模型分层的选项中,分层相邻并且顺序从低到高的有:

A.物理层-数据链路层-网络层                        B.数据链路层-网络接口层-网络层

C.传输层-会话层-表示层                               D.表示层-会话层-应用层

OSI七层:物理层-数据链路层-网络层-传输层-会话层-表示层-应用层

TCP/IP五层:物理层-数据链路层-网络层-传输层-应用层

4.算法编程题:找最小数

给一个正整数 NUM1,计算出新正整数 NUM2NUM2 为 NUM1 中移除 N 位数字后的结果,需要使得 NUM2 的值最小。

核心思路:要让剩下的数字最小,就要保证靠前的数字尽可能小

拿1432219举例,移除3位,最终结果为1219

八股文面试day5_第1张图片

public String removeKdigits(String num, int k) {
        Stack stack = new Stack<>();

        for (char digit : num.toCharArray()) {
            while (k > 0 && !stack.isEmpty() && stack.peek() > digit) {
                stack.pop();
                k--;
            }
            stack.push(digit);
        }

        // 删除k个字符
        for (int i = 0; i < k; i++) {
            stack.pop();
        }

        // 组合剩余字符
        StringBuilder sb = new StringBuilder();
        while (!stack.isEmpty()) {
            sb.insert(0, stack.pop());
        }

        // 移除前导零并返回结果
        while (sb.length() > 0 && sb.charAt(0) == '0') {
            sb.deleteCharAt(0);
        }

        return sb.length() == 0 ? "0" : sb.toString();
    }

5.算法编程题:数组中的第k个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素

拿[3,5,4,1,2]举例,整数k=2,最终结果为4 

public int findKthLargest(int[] nums, int k) {
    // 这里,我们创建了一个没有任何参数的优先级队列
    // 在这种情况下,优先级队列的头是队列中最小的元素
    // 元素将按升序从队列中移除
    PriorityQueue minHeap = new PriorityQueue<>();

        // 遍历数组
        for (int i = 0; i < nums.length; i++) {

            // 在遍历过程中,对每个访问的元素采取如下的判断
            // 优先队列里面的元素个数达到了 k 个
            // 并且当前访问的元素小于了优先队列中的最小值,即队头元素
            // 说明当前访问的元素没有资格加入到优先队列中
            if ( minHeap.size() == k && nums[i] <= minHeap.peek() ) {

                // 那么继续访问下一个元素
                continue;

            }

            // 将元素插入队列,在优先队列内部会进行排序操作
            // 使得优先级队列的头是队列中最小的元素
            minHeap.offer(nums[i]);

            // 插入了当前元素之后,如果个数超过了 k
            if (minHeap.size() > k) {

                // 那么需要把最小的元素移除
                minHeap.poll();

            }
        }

        // 遍历结束之后,minHeap 存储了数组的前 k 个最大的元素
        // 而第 k 大的元素就是优先队列 minHeap 中的最小值
        return minHeap.peek();
    }

你可能感兴趣的:(面试题,面试)