字节跳动软件工程师技术能力评估面试题库含答案.docxVIP

  • 1
  • 0
  • 约9.83千字
  • 约 27页
  • 2026-02-16 发布于福建
  • 举报

字节跳动软件工程师技术能力评估面试题库含答案.docx

第PAGE页共NUMPAGES页

2026年字节跳动软件工程师技术能力评估面试题库含答案

一、编程基础与数据结构(共5题,每题10分,总分50分)

题目1(10分)

实现一个函数,输入一个非负整数n,返回n的字符串表示中数字字符的个数。例如,输入12345,返回5;输入1002,返回3。

java

publicintcountDigits(intn){

if(n==0)return1;

intcount=0;

while(n0){

count++;

n/=10;

}

returncount;

}

解析:通过循环除以10统计数字位数,注意处理n为0的特殊情况。

题目2(10分)

给定一个排序数组,实现二分查找算法,返回目标值的索引,如果不存在返回-1。要求时间复杂度为O(logn)。

java

publicintbinarySearch(int[]nums,inttarget){

intleft=0,right=nums.length-1;

while(left=right){

intmid=left+(right-left)/2;

if(nums[mid]==target)returnmid;

elseif(nums[mid]target)left=mid+1;

elseright=mid-1;

}

return-1;

}

解析:标准二分查找实现,注意防止溢出使用(left+right)/2。

题目3(10分)

实现一个函数,将一个字符串中的所有空格替换为%20。假设字符串有足够空间存储转换后的字符串。

java

publicStringreplaceSpaces(Strings){

char[]chars=s.toCharArray();

intspaceCount=0;

for(charc:chars){

if(c==)spaceCount++;

}

char[]newChars=newchar[chars.length+spaceCount2];

intj=0;

for(inti=0;ichars.length;i++){

if(chars[i]==){

newChars[j++]=%;

newChars[j++]=2;

newChars[j++]=0;

}else{

newChars[j++]=chars[i];

}

}

returnnewString(newChars);

}

解析:先统计空格数量,再从后往前替换,避免覆盖。

题目4(10分)

实现一个函数,判断一个链表是否为回文链表。可以返回布尔值,也可以返回修改后的链表。

java

publicbooleanisPalindrome(ListNodehead){

if(head==null||head.next==null)returntrue;

//找到中点

ListNodeslow=head,fast=head;

while(fast.next!=nullfast.next.next!=null){

slow=slow.next;

fast=fast.next.next;

}

//反转后半部分

ListNodeprev=null,curr=slow.next;

while(curr!=null){

ListNodenext=curr.next;

curr.next=prev;

prev=curr;

curr=next;

}

//对比前后半部分

ListNodefirst=head,second=prev;

while(second!=null){

if(first.val!=second.val)returnfalse;

first=first.next;

second=second.next;

}

//恢复链表

curr=prev;

prev=null;

while(curr!=null){

ListNodenext=curr.next;

curr.next=prev;

prev=curr;

curr=next;

}

slow.next=prev;

returntrue;

}

解析:通过快慢指针找到中点,反转后半部分,然后对比,最后恢复链表。

题目5(10分)

实现一个函数,给定一个无重复元素的数组,返回所有可能的

文档评论(0)

1亿VIP精品文档

相关文档