zoukankan      html  css  js  c++  java
  • 阿里内推面试

    内推面试电话打完之后,做了编程笔试,题目很简单,而且之前还用伪代码写过,有点紧张最终写了个大概,但思路还算清楚,已经凉凉!

    电话面试问题:

    1、介绍项目,业务逻辑+框架+部署+运维+数据库;

    2、GC算法,标记清楚、标记整理、复制算法;

    3、双亲委派机制;

    4、ThreadLocal;

    5、乐观锁和悲观锁;

     

    问题还算比较简单,都xjb说了一些,然后发了个编程题,在线测了一下,太紧张只写了个大概,现在想想愚不可及。。。。面试完了一下就写出来了,真是呵呵。。。上题及实现:

     题目:
      给定一个字符串,找出这个字符串中最长的不重复串。
      比如:对于字符串"abcba",那么返回的结果应该是"abc"或者"cba"(返回一个即可);对于字符串"acbba",返回的应是"acb"
     1 package interview.test;
     2 
     3 import java.util.Scanner;
     4 
     5 public class TestClass {
     6 
     7   /** 1 40'
     8    题目:
     9    给定一个字符串,找出这个字符串中最长的不重复串。
    10    比如:对于字符串"abcba",那么返回的结果应该是"abc"或者"cba"(返回一个即可);对于字符串"acbba",返回的应是"acb"
    11    */
    12   public static void main(String[] args) {
    13     // write your code here
    14     Scanner sc = new Scanner(System.in);
    15 
    16     String inputString = sc.nextLine();
    17     char[] arrString = inputString.toCharArray();
    18     int length = arrString.length;
    19 
    20     // 记录最大长度的不重复的字符串的起始位置和终止位置,及最大长度
    21     int start = 0;
    22     int end = 1;
    23     int maxLength = 1;
    24 
    25     // 用来滑动的窗口
    26     int windowStart = 0;
    27     int windowEnd = 1;
    28 
    29     // 存储字符是否已在子串中,字符的ASCII做为数组索引,数组值为当前字符的索引位置
    30     int[] flag = new int[256];
    31     for (int i = 0;i < 256; i++){
    32       flag[i] = -1;
    33     }
    34 
    35     flag[arrString[0]]= 0;
    36     for(int i = 1; i < length; i++) {
    37       // 如果已经存在,将窗口起始点值为该元素的index
    38       if (windowStart < windowEnd){
    39         if(flag[arrString[i]] >= 0 ) {
    40           windowStart = flag[arrString[i]];
    41         }else {
    42           flag[arrString[i]] = i;
    43           windowEnd++;
    44         }
    45 
    46         // 如果当前滑动窗口的长度大于原来记录的最大非重复子串的长度,说明找到了一个新的最大子串,更新最大子串纪录值
    47         if ((windowEnd - windowStart + 1) > maxLength) {
    48           maxLength = windowEnd- windowStart + 1;
    49           start = windowStart;
    50           end = windowEnd;
    51         }
    52       }
    53     }
    54     StringBuilder db = new StringBuilder();
    55     for(int k = start;k < end; k++) {
    56       db.append(arrString[k]);
    57     }
    58     System.out.println(db);
    59   }
    60 }
    专注搬砖,擅长搬砖砸自己的脚~~~ Email: ltwbuaa@163.com
  • 相关阅读:
    IIS网站或系统验证码不显示问题——"使用了托管的处理程序,但是未安装或未完整安装 ASP.NET"
    Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
    RESTful API 设计指南
    Js计算当前日,当前周开始结束时间,当前月份,当前年份
    highcharts
    CSS布局 ——从display,position, float属性谈起
    CSS的选择器
    DOC窗口之cd命令(windows)
    Tomcat的启动与关闭以及启动时一闪而过的解决方法
    为什么安装jdk时,会安装两个jre?不用配置jre的环境变量
  • 原文地址:https://www.cnblogs.com/TonvyLeeBlogs/p/9449878.html
Copyright © 2011-2022 走看看