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
  • 相关阅读:
    使用PHP Socket 编程模拟Http post和get请求
    php socket客户端及服务器端应用实例
    php五大运行模式CGI,FAST-CGI,CLI,ISAPI,APACHE模式浅谈
    php 连接 mssql sql2008
    开源内容管理系统Joomla正式发布3.5版本 基于PHP 7
    swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别
    swift--获取window
    ios开发之--ios11适配:TableView的heightForHeaderInSection设置高度无效/UISearchBar消失
    swift--触摸(UITouch)事件(点击,移动,抬起)
    swift--添加新手引导页
  • 原文地址:https://www.cnblogs.com/TonvyLeeBlogs/p/9449878.html
Copyright © 2011-2022 走看看