前日到腾讯进行了笔试,回想其中一道笔试选择题无太大把握.回来上机进行了验证,果然选错了.特在此记下,已便日后查阅.
试题如下:
"|DF|A".split("|").length的结果是()
A 2 B 3 C 5 D 6
我知道String的split方法极容易出错,然而想不到的是这道题的答案竟然是D.
分析:
这道题的关键是String.split方法的参数是一个正则表达式字符串,split实际上调用的是:
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
}
而"|"这里不是简单的'|'字符,查阅Pattern类API就会知道:
"|"是正则表达式里的逻辑或运算符,它被编译后匹配的是其左右两边的任意一个字符串.举个例子来说
String[] arr = "a1b2cc1dd".split("1|2");//以1或者2分隔字符串
System.out.println(arr.length);
for(String s:arr){
System.out.println(s);
}
结果:
4
a
b
cc
dd
//以空串或者空串分隔字符串,实际上是分隔每一个字符
String[] arr = "a1b2cc1dd".split("|");
System.out.println(arr.length);
for(String s:arr){
System.out.println(s);
}
结果:
10
a
1
b
2
c
c
1
d
d
这道题到这里已经知道为什么要选择D了,但对于String.split方法我觉得更容易出问题的还在以下一些例子,请读者自己查看源码查找答案:
"|DF|A|||".split("[|]").length = 3
"||DF|A|||".split("[|]").length = 4
public String[] split(CharSequence input, int limit) {
int index = 0;
boolean matchLimited = limit > 0;
ArrayList matchList = new ArrayList();
Matcher m = matcher(input);
// Add segments before each match found
while(m.find()) {
if (!matchLimited || matchList.size() < limit - 1) {
String match = input.subSequence(index, m.start()).toString();
matchList.add(match);
index = m.end();
} else if (matchList.size() == limit - 1) { // last one
String match = input.subSequence(index,
input.length()).toString();
matchList.add(match);
index = m.end();
}
}
// If no match was found, return this
if (index == 0)
return new String[] {input.toString()};
// Add remaining segment
if (!matchLimited || matchList.size() < limit)
matchList.add(input.subSequence(index, input.length()).toString());
// Construct result
int resultSize = matchList.size();
if (limit == 0)
//请看这里做了什么操作,分隔后的结果从最后开始遍历,凡是等于空串的一律截掉,否则退出
while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
resultSize--;
String[] result = new String[resultSize];
return (String[])matchList.subList(0, resultSize).toArray(result);
}
分享到:
相关推荐
《2015年腾讯Java工程师笔试题》 在2015年,腾讯作为中国乃至全球互联网行业的领军企业,其对Java工程师的招聘标准无疑具有极高的参考价值。这份笔试题集,不仅反映了当时Java技术的发展趋势,也揭示了腾讯对于Java...
2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016年腾讯校招笔试题(主观题2016...
腾讯公司研发笔试题与详解三套腾讯公司研发笔试题与详解三套腾讯公司研发笔试题与详解三套腾讯公司研发笔试题与详解三套腾讯公司研发笔试题与详解三套腾讯公司研发笔试题与详解三套
【腾讯2010实习Java笔试题解析】 在求职过程中,技术面试和笔试是检验应聘者专业技能的重要环节。对于Java开发者来说,了解并准备这类试题有助于提升自己的竞争力。腾讯作为国内知名的互联网巨头,其笔试题目往往...
【腾讯PHP工程师笔试题解析】 腾讯作为国内知名的互联网巨头,其招聘流程往往包含了严谨的笔试环节,旨在评估应聘者的编程基础、算法理解以及问题解决能力。以下是对几道典型笔试题目的详细解析: 1. 设计程序缓存...
这是我不知道什么时候下的一个,挺好的。希望广大朋友可以借鉴。关于腾讯的笔试题里面题型挺全的。
腾讯的笔试题腾讯的笔试题腾讯的笔试题腾讯的笔试题腾讯的笔试题腾讯的笔试题腾讯的笔试题腾讯的笔试题腾讯的笔试题
【腾讯研发笔试题】是针对想要进入腾讯公司从事研发岗位的应聘者所设计的一系列测试题目,主要考察候选人的编程能力、算法理解、系统设计以及问题解决能力。这些题目通常涵盖了计算机科学的基础知识,包括数据结构、...
腾讯产品笔试真题解析 本资源为2018腾讯产品笔试真题,涵盖了多个领域的商业计划书、市场营销策略、产品设计等知识点。下面将对每个问题进行详细的解析和知识点总结。 问题1: 为无人岛吸引岛主,传统的“阳光、...
【腾讯校招Java、测试工程师笔试题】 在腾讯的校招过程中,对于Java和测试工程师的笔试环节,通常会涵盖一系列关键的编程和技术概念。Java是互联网开发中的主流语言,而测试工程师则负责确保软件质量,因此这两个...
腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品策划运营类职位笔试题和参考答案腾讯产品...
1. **编程能力**:腾讯笔试中常常考察C++、Java、Python等主流编程语言的基本语法和高级特性,如面向对象编程、异常处理、内存管理等。此外,编程题目还会涉及编程规范、代码效率和可读性。 2. **算法基础**:掌握...
2015年最新的Java工程师笔试题 本资料共包含以下附件: 2015年最新的Java工程师笔试题.doc
【腾讯Java面试题】 在Java领域,面试是评估求职者技术实力的重要环节,而腾讯作为中国互联网巨头之一,其Java面试题往往具有很高的参考价值。这些题目不仅涵盖基础语法、数据结构、算法、多线程、JVM优化等多个...
腾讯产品笔试真题解析 本资源来自腾讯公司2017年的产品笔试真题,涵盖了多个方面的问题,包括 virtual reality(VR)、augmented reality(AR)、微信支付、新农合支付、高校推广等。下面将对这些问题进行详细的...
10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题10道腾讯的Java面试题
【标题与描述解析】:“2016腾讯运营笔试题.pdf”显然是一份与腾讯公司2016年招聘运营岗位相关的笔试题目文档,主要涵盖了产品营销策略和品牌危机管理等核心知识点。作为一份笔试题,它可能包含了对考生分析问题、...
从给定文件的内容来看,这份文档是一份关于2020年腾讯公司Java高级岗位的笔试面试题。以下是从标题、描述和部分内容中提取出来的知识点: 1. 简历中的项目挑战和解决思路:这部分问题要求应聘者从自己的项目经验中...
java华为面试题、百度试题、腾讯试题、网易笔试题、迅雷笔试题、中兴面试题、Google笔试题
根据给定的文件信息,我们可以总结出以下关于2015年腾讯Java工程师笔试题的知识点: ### 1. Java的起源 - **选择题**:“Java是从(B)语言改进重新设计” - **答案解析**:Java是由Sun Microsystems公司于1995年...