思源智通

收藏
教育
暂无
不需要融资
北京

0

在招职位

294

面试经验

0

真题试卷

查看官网
上传简历
此刻你想和大家分享什么
职位类型
全部
最新
热门
#面经#   公司做AI相关,实习工资开的很高。 看起来福利不错。想着试试投一投。   2天后HR打来电话约了笔试和面试。笔试:  LRU,典,没什么好说的。面试:1.    自我介绍,很久没做了。2.     项目和实习,项目是用的马哥的铁路。 面试官是比较了解这些东西的。直接“我记得这个项目是github上的一个开源项目吧。那你应该是做的二次开发吧。那我不问这个了。  实习问的大概是做了些什么,印象最深刻的是什么。3.   手撕:    请设计一个列表缓存容器(key -> str, value.>List),支持根据id对缓存值进行增删改查,即支持以下方法:1. get(String id)-> List:根据给走的id获取对应的完整有序列表。如果id不存在,返回nul。2. slice(String id, int fromIndex, int toIndex)-> List:根据给定的id获取对应有序列表的子列表范围为[fromIndex, toIndex).如果id不存在或索引越界,返回null,3. replace(String id, List value)-> List:使用给定的value替换id对应的有序列表,并返回被替换的原列表。如果id不存在,则新增该键值对并返回null4. insertHead(String id, List value)-> null:将value插入到id对应有序列表的头部。如果id不存在,则新增该键值对。5.removeHead(String id, int count)-> null:移除id对应有序列表的前count个元素。如果当前列表中元素数量小于count,则移除所有元素。  我很少做设计题。刚看见懵逼了。 废了15分钟左右写出来。 明显,面试官绷不住了。4. 讨论了synchronized ,hashtable,concurrenthashmap等,怎么给这个缓存容器做线程安全。  5.反问,一些start-up公司的技术问题。 很有意思。面试官不喜欢八股和面试冲刺项目,要深厚的基础和虚心的态度。 这也是为什么我被挂的原因。#面经#
查看5道真题和解析
点赞 评论 收藏
分享
1.TCP三次握手2.CPU寻址  虚拟内存的作用3.HashMap底层原理详细说一下  扩容是两倍说错了!!4.为什么扩容是两倍数组大小是2的幂时,可以用位与运算,更高效,而不是非2的幂时的取余运算(hash%length),同时,也也可以确保哈希码低位被使用,键更均匀的被分布在桶间。5.Sleep和wait的区别6.Java中四种引用Java四种引用类型 - Helldorado - 博客园强引用、软引用、弱引用、虚引用强引用:Java默认创建对象的引用,即时内存不足(OOM)也不会回收,除非手动置为null软引用:比较重要,除非发生OOM不然不回收弱引用:可有可无,GC时回收,不管是否发生OOM虚引用:每次get都返回null,说明无法通过虚引用获取对象,随时可能被回收,一定要和ReferenceQueue(引用队列)结合使用引用队列:当垃圾回收器回收时,可以将引用加入到相应的引用队列,垃圾回收器就可以通过引用队列判断当前对象是否回收,虚引用必须有引用队列7.CAS是乐观锁还是悲观锁8.类加载过程分为哪几部9.JVM三个默认的类加载器10.BootstrapClassLoader负责加载什么11.Linux服务器cpu飙升怎么排查12.内存泄漏怎么排查?怎么样会导致内存泄漏13.Mysql的事务隔离级别14.慢查询用什么命令去排查15.说说索引失效的四种情况16.Mysql有哪几种锁17.InnoDB为什么用B+树作为索引18.简单介绍Spring的AOP19.AOP使用了什么设计模式20.算法  简单dp:n阶台阶,一次可以走一阶或者两阶,求方案数#邦盛科技#
查看20道真题和解析
点赞 评论 收藏
分享
10-28 16:43
已编辑
门头沟学院 Unity3D客户端
岗位:游戏客户端没录音,只记得那么多了,应该没少太多。问到后面我嘴都要干的说不出话了。 #面经# C#:C#值类型和引用类型在一个struct里面有一个类对象,这个类对象是存在堆上还是存在栈上呢C#装箱和拆箱在栈的查找数据为什么比在堆查找要快呢C#中如果对两个引用类型进行比较,比较的是字段还是值C#中用什么方法可以获得对应引用类型的值然后进行比较呢C#泛型C++中的模板可以定义一个T类型的Ta + Tb函数,C#中可以这样做吗C#中常用容器(arrayList、List、dictionary)C#List是什么类型的容器数组和链表有什么区别List中如果中间删除了某些元素,List会做什么操作,原数组会有什么问题数组在不创建新数组的情况下,你怎么实现中间元素的删除C#Dictionary底层是什么哈希表和红黑树的区别以及复杂度哈希表为什么能保持O(1)的插入和删除呢哈希函数一般怎么设计哈希冲突怎么解决通过int值来映射哈希值需要的数组太大了,怎么解决这个问题C#中用static定义构造函数会怎么样C#协程C#yield的作用C#yield return和yield return null有什么区别C#中IEnumeratorC#GC怎么运作的C#怎么判断一个对象该不该回收C#反射是什么C#反射怎么获取一个类然后调用里面的方法呢C#中event和委托有什么区别C#添加事件和删除事件一般通过+=或-=,那如果添加两次+=同一个事件,那调用会执行一次还是两次呢 算法 A*算法如果一个角色用A*算法寻路,发现走不到终点会怎么样一般在算法中遇到墙了该怎么处理图形学渲染管线中顶点着色器和片元着色器是干什么的光栅化中是哪个着色器光栅化是干什么的双线性差值和三线性差值深度缓冲深度测试详细流程透明度测试欧拉角和四元数知道吗?说一下万向节死锁点乘和叉乘的结果分别表示什么一个数字叉乘它本身能得到什么一个独立点 和 两个点连成一条线,怎么计算这个独立点到线的距离Unity静态合批和动态合批Unity怎么判断一个物体能不能进行静态合批呢Unity混合动画怎么做有两个动画片段walk和run,怎么做才能让动画切换变得丝滑Animation中的关键帧作用是什么Unity中Avatar有什么用Unity中AnimationClip中有什么Root Motion动画是什么摄像机中正交镜头和透视镜头的区别摄像机中fov是什么无反问
查看98道真题和解析
点赞 评论 收藏
分享
头像
10-10 11:06
已编辑
武汉理工大学 前端工程师
        今天分享一下美团和蔚来面试中遇到的一些问题。1.(蔚来二面)在forEach和map里面对遍历的值进行改变会影响原数组吗        认真背八股的同学肯定都记得,forEach不会返回新的数组,只是遍历每一项并做计算,map会返回新的数组,所以理所当然的想map不会改变原数组,forEach...会怎么样??想到这里就错了,这也是我当时的思路。        事实上这个问题跟上面那个八股完全没关系。试想一个函数,传递了参数进来并改变这个参数,会不会对原来数据进行改变呢?这个题是在靠这个,需要分类回答。        数组中数据为基本数据类型时,forEach和map都不会改变原数组;数据为引用数据类型时,map和forEach都会改变原数组。在使用 forEach 和 map 方法时,对引用类型元素的修改会直接反映在原始数组中。这是因为引用类型的元素实际上存储的是引用(内存地址),而非值本身。因此,通过引用可以访问和修改原始数组中的元素。而number,string,Boolean,null,undefined这些基本类型在栈内存中直接存储变量与值。2.(美团到家一面)为啥会出现箭头函数        这一个问题可以去b站渡一老师的小视频里看看。        肯定很多人跟我一样第一时间想到的是箭头函数和普通函数的区别,那为啥有这些区别,为啥要单独搞个箭头函数出来?难道只是为了简单吗。其实原因只有一个:消除函数的二义性。        在出现箭头函数之前,函数可以直接被调用,也可以被new当作构造函数使用,这就是函数的二义性。而这种二义性的存在是会给开发带来负担的,因为创建者并不知道未来函数的调用者是如何使用这个函数的,所以后来先在命名上做了规范:小写开头的函数是直接使用的,大写开头的是构造函数。但这种规范也不是强约束,毕竟既可以Number(),又可以new Number(),所以为了消除这种二义性,创造了箭头函数和class,箭头函数只能() => {},当作普通函数调用,而class只能被new,这就刚好对应二义性的两种用法,解决这种复杂情况了。————————10.10补充————————        感谢牛u的提示,这边还有一个点补充。        箭头函数的出现解决了this的复杂指向问题。        举例如图3所示,当调用show方法打印this.x的时候打印的是undefined。这是因为当代码执行到了setTimexout( )的时候,此时的this已经变成了window对象(setTimeout( )是window对象的方法),因此会在window上查找x,找不到,就输出undefined。        而如果是箭头函数,箭头函数的this是定义时就确定的,因此箭头函数的this指向的是obj,输出的就是obj.x。这样就解决了普通函数在当作回调函数传递的时候this变化带来的麻烦,否则就要用全局变量或者闭包之类的方法。3.(美团到家一面)obj对象中有一个方法,用obj.a()和(obj.a)()去调用分别输出什么(a方法中输出this.name,obj和全局都有一个name属性)?        这个题其实是当时考的一个输出题(图1)。下来尝试了一下,答案是没区别,都输出obj对象中的name。        这个题我一开始以为(obj.a)()这种调用就跟let b = obj.a,然后调用b()这种形式一样,但不是这样的,这个点可以记一下。        然后还要注意的一个点是,如果这个方法是箭头函数的形式(图2),那么this指向就不一样了,指向的是window。所以会在window上面去找name。那么这个时候输出什么?        是不是很多人脱口而出,“输出hong!”        恭喜各位掉到新坑了,这个时候输出是空(什么都没有:“”)        因为let和const定义的变量是不会挂到window对象身上的,如果改成var就能输出hong了,大家可以自行尝试一下、        (上面这个点个人认为还是很细的,一定要小心)                这几个是自己踩过的坑,第三点应该很多同学都会想错。        欢迎各位评论区交流~#24届软开秋招面试经验大赏##软件开发2024笔面经##美团##蔚来##前端#
菠萝包lime:佬说的太棒了,箭头函数这块我也看的渡一的视频,当时被问到还是挺爽的,直接从二义性回答。
点赞 评论 收藏
分享
09-11 23:18
已编辑
门头沟学院 Java
自我介绍————1. 短链接项目中创建接口为什么用布隆过滤器?不是有误判的可能性吗,如何保证数据的正确性?高并发场景怎么解决的?    - 布隆过滤器判断不存在的时候是完全准确的,而判断存在的误判率通过对布隆过滤器参数的配置可以降到一个很小的可接受的范围内,在系统不受攻击的情况下使用MySQL数据库的唯一索引作为兜底,如果创建成功的短链接进入数据库持久化时报唯一索引错误,此时执行事务回滚即可。如果同一个链接被高并发地创建,则此时由预防缓存穿透的逻辑解决,首次查询之后Redis会存储空对象,这样之后的请求不会全部打到数据库。2. AQS是什么?【简历写的,其实没答太好】    - 全称是AbstractQueuedSynchronizer,是在JUC包中定义的,内部属性包含有一个int变量一个同步队列,作用是作为一个接口提供锁的通用实现机制。(后面胡扯绕了半天也没说点啥3. 介绍一下HashMap;为什么HashMap不支持多线程并发?HashMap如何解决Hash冲突?ConcurrentHashMap如何实现的?    - 经典八股,说的八九不离十,扩容和红黑树、node数组加锁都提了4. 事务的隔离级别?可重复读是如何实现的?    - 说了读写锁和共享锁,一些当前读和快照读的理解,第一条select执行快照读创建Read View快照,此后的select都访问该快照,但如果执行update语句时,则会执行当前读,一定会去读最新的数据5. 算法:打家劫舍Ⅱ    - 最开始用注释写了个状态转移方程,因为首尾相接不好统一处理,卡了半天    - 面试官提示可以分两种情况,确定偷第一家或者确定不偷,这样不用做统一处理。然后我开了两个dp数组写了一坨答辩代码,    - 面试官说勉强算解决了,提出状态转移方程其实只涉及到了dp[n-2] dp[n-1]和dp[n]三个变量,其实可以用滚动方法优化空间复杂度,我说这个我明白,然后写了个封装函数robRange(int[] nums,int l,int r)把之前的逻辑整合简洁了一些,用上了滚动数组,主函数直接return Math.max(robRange(nums,0,n-1),robRange(nums,1,n));这样又写了半天,算法全过程总共墨迹了十几二十分钟    - 面试官又提示了各种代码细节问题,比如函数返回值没写,有些地方复制的时候没改完美,总算是兜兜转转弄了一份完整代码。    - 后面反问环节:我问了一下“刚才算法那块我感觉我写的有点烂,不知道您怎么看”,面试官说,这个其实就是刷的多就会,刷的少就不熟,我看你刚才反应也还算快的,多练就好。6. 场景代码题: Ⅰ. 单例模式示例代码如下,有哪些问题?----------------------------------------------------public class Singleton {    static Singleton instance;    private Singleton() {    }    static Singleton getInstance() {        if (instance == null) {            synchronized (Singleton.class) {                instance = new Singleton();            }        }        return instance;    }}------------------------------------------------------        - 其实有一堆问题,但是我只说了最明显的:只用了一层检查锁,首次进入的时候可能多个线程进入if块内创建多个单例        - 面试官:这个地方用volatile修饰会怎么样?引导之后我说了一些使用volatile的优点,然后继续问“这样就行了吗”,我说看不出来什么问题了,结果给我讲了1分钟使用new关键字和指令重排序方面的知识,我全程点头啊对对对,不知所措(----------------------------------------------------------------------- Ⅱ. MySQL事务场景题--------------------------------------------------CREATE TABLE t (    id INT PRIMARY KEY,    k INT);INSERT INTO t (id, k) VALUES (1, 1), (3, 3);T A;UPDATE t SET k = 3 WHERE id = 1;COMMIT;T B;SELECT * FROM t WHERE id = 1;UPDATE t SET k = k + 1 WHERE id = 1;COMMIT;-------------------------------------------------- 问:事务A在commit之前因故阻塞了,在事务B的update语句前提交了,问此时事务B提交后id=1的k是多少? 答:B事务提交完成后,此时k=4,因为update语句是当前读,事务A的提交对于B的update是可见的,所以相当于id=1的k先被修改事务A为3,事务B执行自增后变为4------------------------------------------------反问:  公司主营业务是什么?  刚才代码感觉敲的不好,问题大吗?#日常实习#  #面经# #Java# #MySQL#
双飞鼠鼠不会梦到大厂offer:现在小厂都算法,场景了么
查看7道真题和解析
点赞 评论 收藏
分享
1. 解释C++中的内存管理机制(如堆和栈)。2. 描述C++中的拷贝构造函数和赋值运算符的作用及其区别。3. 什么是RAII?如何在C++中实现?4. 解释虚函数和虚表的原理。5. 描述C++中的构造函数和析构函数的作用和特点。6. 说明C++中的多重继承及其可能带来的问题。7. 什么是模板?如何在C++中定义和使用模板?8. 解释C++11中的`auto`关键字的使用场景和优势。9. 描述C++11中的`nullptr`的作用以及它与`NULL`的区别。10. 解释C++11中的智能指针`unique_ptr`的使用方法及其优缺点。11. 解释C++11中的`shared_ptr`的工作原理及其常见用法。12. 如何在C++中实现自定义异常处理?13. 描述C++中的`std::move`和`std::forward`的用途及其区别。14. 解释C++中的`enum`类与传统`enum`的区别。15. 什么是C++中的“函数对象”?如何定义和使用它们?16. 描述C++中的`std::function`和`std::bind`的功能和应用。17. 解释C++中的类型推导(type deduction)机制及其使用方法。18. 解释`static`关键字在类中的作用。19. 什么是C++中的“完美转发”?如何实现?20. 解释C++中的`constexpr`关键字及其用法。21. 描述C++中的`inline`函数及其优化作用。22. 什么是C++中的“左值引用”和“右值引用”?如何使用?23. 解释C++中的“移动构造函数”和“移动赋值运算符”。24. 描述C++中的“异常安全性”及其分类。25. 什么是C++中的“类模板”与“函数模板”?有什么区别?26. 解释C++中的“非类型模板参数”及其应用。27. 如何在C++中实现和使用“虚继承”?28. 描述C++中的“动态多态”和“静态多态”的区别。29. 什么是“C++中的拷贝控制”?如何自定义拷贝控制?30. 解释C++中的“友元函数”及其用途。31. 描述C++中的“析构函数”以及如何避免“资源泄漏”。32. 如何使用C++中的“`std::thread`”类进行多线程编程?33. 解释C++中的“`std::mutex`”和“`std::lock_guard`”的作用及其用法。34. 什么是C++中的“C++17”新特性?举例说明。35. 解释C++中的“`decltype`”关键字及其用途。问题答案已经整理到专栏中了,关注我分享更多知识。  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看35道真题和解析
点赞 评论 收藏
分享
一面技术面:1.自我介绍2.介绍实习的项目3.redis有用在哪些地方4.redis为什么性能好?5.mysql有了解吗?6.场景题,找出在表A但不在表B中的数据?left join + is null微服务项目的问题7.谈一谈对微服务的理解?8.openfeign底层原理(问好像不是这么问的,但我答了feign的底层)9.开放题:我们的主要业务主要是做大模型的相关产品,进来的话能为我们做什么?乱答---------------------------------------------------------------------------------------------第二天早上跟我说面试过了,等offer,下午又跟我说临时加一面。。。二面:1.自我介绍2.说一下你比较擅长的技术栈,或者你项目中碰到的难题,然后我们展开探讨一下?说了redis和mysql3.redis缓存击穿及解决方法?4.布隆过滤器为什么会有误判率?5.redis的哨兵模式?6.如何推选新的主节点?7.项目用了rabbitmq,有了解死信队列吗?举例了超时取消支付8.什么情况下会死信,应用场景?答了超时取消支付,还有消息堆积过多,面试官说还有一个也是最重要的,数据类型不一致9.说一下数据类型不一致为啥会死信?10.rabbitmq之外的其他消息队列,以及他们适合的场景?(答了rabbitmq, rocketmq,kafka及应用场景)11.举个自己的事例,能够体现自己的学习能力强?12.接触一门新的技术栈,如何快速上手?13.硕士人工智能,做什么方向?14.然后就顺着我说的方向,问了我好几个关于模型结构及作用的具体的问题,这块我其实比较水,答得很差反问阶段---------------------------------------------------------------------------------------------总结:一开始面试约周五,后来推迟到周一,面完第二天跟我说过了,下午又跟我说临时加一面,定在晚上,到时间后跟我说面试官没时间,说再重新确定时间,我跟hr说是不是耍我,然后hr道歉后说约到时间跟我说,然后15分钟后hr跟我说可以进会议了。二面的面试官感觉比一面的面试官专业很多,要求也高很多,所以 反问阶段我问他他是做什么方向的,他说大模型后端前端都会。。。挺迷幻的一次面试经历---------------------------------------------------------------------------------------------9.04 hr跟我说面试过了,口头offer
查看23道真题和解析
点赞 评论 收藏
分享
一面就是做题设计一个LRUCache•get (key):获取指定key 的value 值(如果存在),并将该key 移动到最近使用的位置。。•put (key, value):插入一个新的key-value 对,如果插入前缓存已经满了,那么将最久未使用的 key-value 对删除。•可输出缓存结构内所有key-value对。package thread;import java.util.HashMap;import java.util.LinkedList;import java.util.Map;public class LRUCache {    public static void main(String[] args) {        LRUCache cache = new LRUCache(5);        cache.put(1,1);        cache.put(2,2);        cache.put(3,3);        System.out.println(cache.get(0));        cache.put(4,4);        cache.put(5,5);        cache.put(6,6);        System.out.println(cache.get(3));        cache.put(2,3);    }    private int capacity;    private Map<Integer, Integer> cache;    private LinkedList<Integer> keyOrder;    public LRUCache(int capacity) {        this.capacity = capacity;        cache = new HashMap<>();        keyOrder = new LinkedList<>();    }    public Integer get(int key) {        if(!cache.containsKey(key)){            return null;        }        // 移动最近使用的位置        keyOrder.remove(key);        keyOrder.addLast(key);        return cache.get(key);    }    public void put(int key, int value) {        if (cache.size() > 5) {            return;        }        // 先判断key是否已存在        if (cache.containsKey(key)){            // 如果已经存在了,移动到最近的位置            cache.put(key,value);            keyOrder.remove(key);            keyOrder.addLast(key);        }else{            if(cache.size() == capacity){                // 满了就删除最久没使用过的                int old = keyOrder.removeFirst();                cache.remove(old);            }            cache.put(key,value);            keyOrder.addLast(key);        }    }}
查看4道真题和解析
点赞 评论 收藏
分享
模拟面试
真实面试体验,快速补齐短板
应聘感受
暂无应聘感受
牛客网
牛客企业服务