当前位置: 首页 > 面试经验 >

小红书前端笔试4.7+3.26(附题解)

优质
小牛编辑
206浏览
2023-04-09

小红书前端笔试4.7+3.26(附题解)

笔试说明

笔试得分60%一般通过,面试答对80%才能通过

一般过了3道编程,过了1.5就差不多,2就稳了。但是不绝对,有的一道题也会让你面试,有的a了2,也不一定有面试机会

有没有面试机会更多看的是卷的程度,学历能提分

平台

连同一平台的笔试模式也可能不同,千万不能掉以轻心,比如百度牛客网,我以为和之前的SHINE在牛客网上的笔试一样是核心代码模式。笔试平台都会提供输入输出示例,但是考试时现场学浪费时间。

一般是允许本地编程的,建议本地编程,因为有时候平台代码提示功能不好,比如拼写错误检查费时。

记得考前清空本地IDE代码,准备好空模板,不要在考试时一打开就是上次的代码,含有代码的IDE有可能被记为作弊。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!ACM模式和普通的核心代码模式完全不一样!!!!!!!!!!!!!!

所以大家一定,一定提前练习牛客的输入输出和赛码网的输入输出!!!一定提前练习!!!!

牛客的输入输出练习看这,没空的可以直接看模板前端笔试常考数据结构,ACM模板,经典算法

编程

请养成,随手保存代码的好习惯,以防出现意外。

得分=AC率*总分

能力不足的情况下,编程题一定要把握好节奏,明白初心是通过笔试,而不是全部做出来。

小红书

赛码网上笔试,建议提前了解输入输出

笔试得分60%一般通过,面试答对80%才能通过

单选20题40分+编程3题60分

4.7选择题

知识点覆盖到HTML+CSS+JS+数据库+操作系统+数据结构与算法

小红书:前端,计算机基础,常规算法(前端:计算机基础=3:1)

计算机基础(数据库,操作系统,数据结构与算法,计算机网络)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!4.7单选和多选题是混着出的,一定要注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • 图片中定义标题的标签是什么(<figcaption>)

  • Mysql中set names utf18的简写

  • 场景题:完全背包问题

  • 斐波拉契数列中的第15项是什么

  • 长度为10的有序表静心等概率的查找,成功平均查找长度是多少((n+1)/2)

  • 协作图的元素有哪些

  • display设置为什么的时候,为内联元素(inline)

  • 内存有哪些(堆,栈)

  • 场景题:进程中的直接关系

  • 看代码选输出(x2)

4.7编程

1.给定一颗树,删除某边,使得分裂的两个树的结点数绝对值最小

2.给出正整数n,X,C,有n类体积为xi,物质为yi单位的溶液进行配比(例如i和j配比,体积=xi+xj,物质=yi+yj),当体积相等时,物质=yi+yj+X,当n类溶液数量不限,生产的新溶液也可以接着和其他溶液配比,求当配比总溶液为C时,最大的物质能有多

3.双色球编号为1-n,当红球在袋子里,红球的编号每秒+1,蓝球编号每秒-1,每次操作分类ti时刻向袋子中放入球,从袋子中取出球,以及询问当前所有袋子中编号和(初始情况下袋子中没有球)

T1: 平衡(DFS)

对于树的每条边,记录子节点所在子树的节点个数为m,则平衡值为abs(2m - n),用dfs遍历子树即可。

from collections import defaultdict
def solve(n, edges):
    score, fa, ans = [1] * n, [-1] * n, []
    ch = defaultdict(list)
    for u, v in edges:
        ch[v - 1].append(u - 1)
        fa[u - 1] = v - 1
    root = fa.index(-1)
    def dfs(x):
        for y in ch[x]:
            score[x] += dfs(y)
        ans.append(abs(2 * score[x] - n))
        return score[x]
    dfs(root)
    minv = min(ans)
    return minv, ans.count(minv)

n = int(input())
edges = []
for _ in range(n - 1):
    s, t = map(int, input().split())
    edges.append((s, t))
print(*solve(n, edges))

T2: 配制溶液(动态规划)

记dp[i]为溶液体积为i时物质含量的最大值,状态转移方程为

dp[i] = dp[j] + dp[i - j],     if 2 * j != i;

dp[i] = dp[j] + dp[i - j] + X, if 2 * j == i.

复杂度为O(n^2),n<=1000能通过。

def solve(volumns, weights, add, target):
    dp = [-float('inf')] * (target + 1)
    for v, w in zip(volumns, weights):
        dp[v] = max(dp[v], w)
    for i in range(1, target + 1):
        for j in range(1, i):
            dp[i] = max(dp[i], dp[j] + dp[i - j] + add * (2 * j == i))
    return dp[-1]
  
_, add, target = map(int, input().split())
volumns = list(map(int, input().split()))
weights = list(map(int, input().split()))
print(solve(volumns, weights, add, target))

T3: 袋子和球(模拟)

变量比较多,比较复杂地模拟一遍即可,注释写代码里了,复杂度O(m).

def solve(nums, colors, times, operations):
    ans, puttime = [], [0] * len(nums) # 查询答案,记录每个球的入袋时间
    rcnt = bcnt = sum = last = 0 # 红球数,蓝球数,当前总和,上一次操作时间
    for t, op in zip(times, operations):
        sum += (t - last) * (rcnt - bcnt)
        if op == 0: ans.append(sum)
        elif op > 0: 
            if colors[op - 1] == 'R': rcnt += 1
            else: bcnt += 1
            puttime[op - 1] = t
            sum += nums[op - 1]
        elif op < 0:
            if colors[-op - 1] == 'R': 
                rcnt -= 1
                nums[-op - 1] += t - puttime[-op - 1]
            else: 
                bcnt -= 1
                nums[-op - 1] -= t - puttime[-op - 1]
            sum -= nums[-op - 1]
        last = t
    return ans
    
n = int(input())
nums = list(map(int, input().split()))
colors = list(input())
m = int(input())
times = list(map(int, input().split()))
operations = list(map(int, input().split()))
ans = solve(nums, colors, times, operations)
print(len(ans), *ans)

3.26编程

1.加密:a-z中的任意字母加密模式为往后移动三位,超过z的,会循环到a处,求加密前的字符串

2.K排序:每次取数组中k个元素,排好序后,放到数组末尾,其他的元素往前移动,求最少需要几趟排序

3.涂色:对数组Left,Right区间的元素,与指定的X进行‘|’,‘&’,‘=’,求M趟后的数组

个人感觉4.7(23届春招补录+24届暑假实习一起考)比3.26(24届暑假实习小红书前端笔试3.26总结选择题要容易,但编程题要难。

笔试数据结构和常考算法请参考2023年最全前端面试题考点HTML5+CSS3+JS+Vue3+React18+八股文+手写+项目+笔试(会根据各家笔试不断完善)


#小红书##前端##笔试##软件开发2023笔面经##实习#

 类似资料: