草庐IT

面试总结+力扣第二天刷题

我爱charming你 2025-02-18 原文

一.面试总结

        4月20号下午进行了一场大数据视频面试,总结一下踩坑点:

       1.确定面试后,第一件事要和HR确定面试方式,具体时间、地点、什么软件、岗位JD等必须信息。

        这里很多人有一个思想误区,认为问的太多会给HR不好的印象;其实大可不必,如果你通过了简历筛选,你就有权力使用公司招聘的人力资源。

        2.要在面试10分钟前就进入面试的环境中,以防突发事件。

        3.面试最开始都会有一个自我介绍环节,这个自我介绍环节,一定要慎之又慎,最好写下来,让朋友、长辈等审核多遍。

        注:我面试时,在这踩了一个坑,自我介绍的时候踩了我要面试的岗位一脚,被技术面试官抓住了这一点,让自己陷入了被动。

        面试后做复盘,朋友给了我一个更好的说法。

        4.问答环节中,一定要准备齐全,切忌好高骛远。各方面的问题都要准备。

        注:当时我在这里踩了坑。我面试的是大数据岗位,我把大数据架构zookeeper、Hdfs、MapReduce、Yarn等都做了准备。但面试官开始直接问Linux命令、Mysql语法。

        所以如果面试与数据相关岗位,一定要把Linux命令、Mysql等准备好。很可能他们公司并不一定用你学的大数据架构(最后,向面试官提问的时候,我才知道他们公司和我学的Hadoop架构不一样),但是他们一定知道最基础的Linux命令和Mysql等,校招尤其是这样。

        注:我同时在简历上写了人工智能算法,我在这里也踩了坑。

        如果在简历上写了人工智能算法,一定要给你的算法准备一套话术,并且写下来,面试之前拿来看一下,面试完该忘就忘。话术准备原则:要有画面感,你得简单直接告诉面试官你的算法是什么样子,实现什么,原理是什么等,层层递进,要有逻辑。

        注:面试过程中,如果准备不足或者说准备的再详细但是没有亲自操作过,这个时候在面试中会有一种迫切想结束的感觉。

        本人建议,面对上述情况,很多问题一定要准备话术,无论再细小的点,也要写下来,让它饱满化,面试之前扫一眼。比如问你一个简单的ls linux命令,你也可以借这个话题扯到更复杂的Linux命令等。

        注:如果准备的非常详细,有很多知识想要输出,你可以问面试官这样一句话,我对什么什么很了解,可以给你介绍一下吗?面试官一般不会拒绝,但是你介绍的时候一定要介绍清楚,要不然会起反效果。

        5.提问环节结束后,技术面试官都会让你问他问题,这个时候切忌问他,待遇啥的、吃住啥的,你得问他技术方面的问题。

        注:当时我踩坑在这里,我问技术面试官,培养计划、吃住等。技术面试官叫了HR来回答,切忌问问题要看场合找对人,这些问题可以问最开始和你对接的HR。问技术面试管的套路:

        (1).贵公司的技术架构是什么。

        (2).贵公司的数据采集是对人进行数据采集还是对物进行数据采集。

        (3).贵公司做的是离线和实时。

        (4).贵公司有没有开展大数据与人工智能结合的项目。

        如果面试的是技术储备干部,往往会有下面两个问题:

        (1)你未来的职业规划是什么?

        (2)当你面对职业瓶颈,你会怎么去解决?

        

        说的再多,也要实践第一次实践也会有各种各样问题,经验只会让你少走弯路,让你一次实践相当于其他人多次实践,而不会替代实践

        找工作的时间,也是一个学习的时间,把你想写的东西全部写在简历上(不要管会不会);结合自己的简历写的内容,进行学习,以此种方式督促自己学习(此方法适用于刚出学校找工作,还没确定具体方向的人,我也是这样干的)

        在学习的时候,可以网上小范围的投简历线下招聘会海投原则。有面试机会就实践,没面试机会就学习循环反复学习知识和总结实践经验,切忌只做一项,能找到工作就更好。

        一切等到简历上的知识全部吃透,知识架构全部搭建起来,话术全部准备好,自信心爆表的时候,全国线上线下海投。

                                                            (上述方法只适用于本人)

二、力扣第二天刷题

977.有序数组的平方

        给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        save_list=[]
        for i in nums:
            save_list.append(i*i)
        save_list.sort()
        return  save_list

        这个不多说,思路很简单。

 209.长度最小的子数组 

        给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。

测试main():

if __name__ == '__main__':
    s = 7
    nums = [2 ,3 ,1 ,2 ,4 ,3]
    nums2=[1,4,4]
    nums3=[]
    s2=4
    #result = minSubArrayLen(s, nums)
    result = minSubArrayLen(s2, nums3)
    print("The minimum length of subarray is:", result)

        (1)长度最小的子数组_暴力解法

def minSubArrayLen( target, nums):
    """
    :type target: int
    :type nums: List[int]
    :rtype: int
    """
    length_nums = len(nums)
    dd = []
    for i in range(length_nums):
        tt = nums[i]
        if tt >= target:
            dd.append(1)
        else:
            for j in range(i + 1, length_nums):
                tt = tt + nums[j]
                if tt >= target:
                    dd.append(j - i + 1)
    hh = len(dd)
    dd.sort()
    print(dd)
    if len(dd) == 0:
        return 0
    else:
        return dd[0]

        重点是两层for循环,首先第一层循环是从第一个起点一个一个往后,然后第二层循环就是以第一个for循环为起点遍历提取出所有符合条件的长度。

        但这种方式,时间超时。

        做题的时候踩坑:

        当输入数据为NULL的时候,得做判断。

    if len(dd) == 0:
        return 0
    else:
        return dd[0]

        当该数组中的某个数据大于target的时候,需要进行判断。

        if tt >= target:
            dd.append(1)
        else:

        else中的主体内容,是提取大于1长度的数组。

(2)长度最小的子数组_滑动窗口解法

         滑动窗口解法是我第一次接触,只能仿照一下,总结一下最关键的点。代码量相对于暴力解法,少了很多。

​
 res=float("inf")
    sum=0
    i=0
    for j in range(len(nums)):
        sum+=nums[j]
        while sum>=s:
            res=min(res,j-i+1)
            sum-=nums[i]
            i+=1
 return 0 if res==float('inf') else res

        最主要的是while循环的使用,首先明确第一层循环中j是滑动窗口最后一个元素的位置,sum是累加和。

        滑动窗口的重点:

                                        一个循环j+while判断+sum

        还有一些技术细节:

                        min(,)函数的使用

                        res=float("inf")#表示无限大的数

                        return 0 if res==float('inf') else res

59.螺旋矩阵

        给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

        测试main():

from typing import List
if __name__ == '__main__':
    n = 3
    matrix = generateMatrix(n)
    for row in matrix:
        print(row)

        旋转是我第一次接触,只能仿照一下,总结一下最关键的点和踩过的坑。

def generateMatrix(n: int) -> List[List[int]]:
    count=0
    dd=0
    xx=0
    a= [[0] * n for _ in range(n)]
    for i in range(1,n//2+1):
        for k in range(xx,n-i):
            count+=1
            a[xx][k]=count
        for k in range(dd,n-i):
            count += 1
            a[k][n-dd-1]=count
        for k in range(n-i,dd,-1):
            count+=1
            a[n-xx-1][k]=count
        for k in range(n-i,dd,-1):
            count+=1
            a[k][dd]=count
        dd+=1
        xx+=1
    if n%2!=0:
        a[n//2][n//2]=n*n
    return a

        (1)头脑中得构建一个具体的图像,对整个过程有一个大致的了解。

        (2)确定左闭右开的模式。

        (3)确定几层循环,n//2(n//2+1 为条件)层循环。(//表示向下取整数)奇数会少一层。

        (4)定义参数:xx表示横坐标,dd表示纵坐标,每一次for外循环(n//2)都要+1。全部for循环,count+=1。

        (5)如果奇数的话,n//2会少一次循环。需要单独赋值,如下代码:

    if n%2!=0:
        a[n//2][n//2]=n*n

   

参考文献:

                (29条消息) 螺旋矩阵(C语言)_goldfish124的博客-CSDN博客

有关面试总结+力扣第二天刷题的更多相关文章

  1. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  2. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  3. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  4. 西安华为OD面试体验 - 2

    西安华为OD面试体验开始投简历技术面试进展工作进展开始投简历去年一整年一直在考研和工作之间纠结,感觉自己的状态好像当时的疫情一样差劲。之前刚毕业的时候投了个大厂的简历,结果一面写算法的时候太拉跨了,虽然知道时dfs但是代码熟练度不够,放在平时给足时间自己可以调试通过,但是熟练度不够那面试当时就写不出来被刷了。说真的算法学到后期我感觉最重要的是熟练度和背板子(对于我这种普通玩家来说),面试题如果一上来短时间内想不出思路就完蛋了。然后由于当时找的工作不是很理想就又想考研了。但是考研是有风险的,我自我感觉自己可能冲不上那个学校,而找工作一个没成可以继续找嘛。本着抱着试试看的态度在boss上投了简历,

  5. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  6. ruby - `respond_to_missing?` 的第二个参数有什么用吗? - 2

    使用method_missing时在Ruby中,它是almostalwaysagoodidea定义respond_to_missing?respond_to_missing?接受两个参数;我们正在检查的方法的名称(symbol),以及一个指示我们是否应该在检查中包含私有(private)方法的bool值(include_all)。现在我感到困惑的是:method_missing不接受任何可能指示它是否应该调用私有(private)方法的参数,如respond_to_missing?做。此外,method_missing无论原始方法调用是在公共(public)上下文还是私有(privat

  7. ruby - stub 实例方法在使用 minitest 的第二次调用时返回值不同 - 2

    我正在对用户的提要进行分页,并想模拟我正在使用的API的响应。API可以返回奇怪的结果,所以我想确保如果API返回我已经看到的项目,请停止分页。我使用minitest在第一次调用方法get_next_page时stub,但我想在第二次和第三次用不同的值调用它时stub。我应该只使用rSpec吗?ruby新手...这是片段test"crawlerdoesnotpaginateifnonewitemsinnextpage"do#1:A,B#2:B,D=>D#3:A=>stopcrawler=CrawlJob.newfirst_page=[{"id"=>"item-A"},{"id"=>"i

  8. ruby-on-rails - Ruby:给定日期找到下一个第二或第四个星期二 - 2

    我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案

  9. [面试直通版]操作系统核心之进程、线程与协程(下) - 2

    点击->操作系统复习的文章集目录操作系统线程线程是什么进程与线程的关系用户态/内核态操作系统资源管理内核态用户态内核态/用户态切换程序运行类型分析计算密集型IO密集型结合进程,线程来理解程序运行类型分析协程基础上下文切换协程协程为什么叫协作式线程?协程的优缺点操作系统线程典型问题:简述进程和线程的区别以下内容带您一步步了解线程是什么比进程更小的独立运行的基本单位-线程(Threads)线程的提出主要是为了提高系统内程序并发执行的程度,从而进一步提升系统的吞吐量,充分发挥多核CPU的优越性而设计的引入进程是为了操作系统更加方便地管理程序,使得多个程序能并发管理和执行而线程则是为了减少程序在并发执

  10. ruby - 为什么触发器运算符包含第二个条件? - 2

    以下代码使用了触发器运算符。(1..10).each{|x|print"#{x},"ifx==3..x==5}为什么结果是3,4,5?我觉得应该是3,4。如教程中所述,此表达式在x==3时为真,并一直为真,直到x==5。如果“5”的计算结果为false,如何打印它?谁能为我澄清一下? 最佳答案 来自“TheRubyProgrammingLanguage”的重要链接是:4.6.9.1Booleanflip-flopsWhenthe..and...operatorsareusedinaconditional,suchasanifstat

随机推荐