首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
已注销
获赞
453
粉丝
85
关注
40
看过 TA
2220
IP属地:北京
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑已注销吗?
发布(143)
评论
刷题
收藏
已注销
关注TA,不错过内容更新
关注
2023-04-04 11:04
家人们-KPI也还是面试吧,真的学到好多
哭晕在厕所,面试前心里面好不舒服,很痛苦,面试的时候发现还行,虽然知道是KPI,但是还是学到很多。比如,北京还是岗位多很多,自己作为中部地区的人,去哪里都行,不该人云亦云的说人家不去北京,我呸,自己什么德行不清楚吗,能力那么差,小地方没你的位置!!其次呢,就是貌似网络和操作系统,JVM都没问,反倒是数据库,JUC,redis分布式锁,SpringBoot问很多,还有MQ,之前又好多问网络操作系统的。哎!!!!!!!!!!
0
点赞
评论
收藏
分享
2023-04-04 11:00
压力好大-突然想开了-以后不挑城市
突然发现自己又不是什么一线城市的人,跟着别人本地的人发牢骚有屁用。自己最大的优势就是不挑城市,因为反正到哪里都是外地人,全都是打工人的身份,一辈子也不可能定居,所以纠结在哪里打工有什么意义吗?人家本地人会倾向于找自己家附近的,你家附近什么也没有,你跟着局限自己有屁用。还天天跟着别人一起说不想去北京
0
点赞
评论
收藏
分享
2023-04-04 09:08
压力好大-突然好不想面试了
感觉自己真的好多都不会,一两天我也只能学一点东西,MySQL一天最多归纳4-5讲,算法题也只刷了十几个,101还没刷完。我感觉一直这个水平,面试也没用。。。感觉得再去闭关学习几个月。学校又好多事情打扰。。。算了,面试就一问三不知就行了、、
0
点赞
评论
收藏
分享
2023-04-03 14:55
finally-return语句会覆盖前
因为是程序执行前的语句,就会覆盖try或者catch的return语句,并不会编译错误finally 语句块通常用于释放资源、清理临时数据等与程序执行无关的操作,例如关闭文件、数据库连接、网络连接等等。在 Java 中,finally 语句块在 try-catch 语句块中使用较为常见,可以确保无论 try 块中的代码是否抛出异常,都会执行 finally 块中的代码,以确保资源得到正确地释放和清理。
0
点赞
评论
收藏
分享
2023-04-03 14:53
速记-高并发注册用户防止重复
1.唯一索引--可以保证不重复插入同一个邮件名,捕捉异常返回异常2. InnoDB默认delete, update, insert加了排他锁的,但是select不存在select exists (select 1 from users where username="XXX");所以应该:BEGIN;SELECT * FROM users WHERE username = 'xxx' FOR UPDATE;INSERT INTO users(username, password) VALUES ('xxx', 'xxx');COMMIT;读锁是lock in share mode;这里加的是写锁,只有事务提交后才会释放的。MVCC只是复制一份快照,当修改提交的时候依然需要获取行级锁的写锁,所以只是不会阻塞读而已。所以这里就可以保证只有一个用户可以读取并且插入成功。其他的尽管MVCC读取,最后因为因为唯一索引,插入都会失败,事务回滚。所以这里行级锁的作用是为了保证原来重复的那一行不被修改,比方说一开始没有用户,那么两个事务都进行了查询,然后其中一个插入了又迅速更新名字。好复杂---反正就是唯一索引---事务---行级锁---for update
0
点赞
评论
收藏
分享
2023-04-03 09:31
没人要Java和Go的半吊子
再一次深切的感受到,国内竞争激烈,你以为自己是Java和Go的双选手,你以为自己是八国语言选手,有用吗?为什么公司不选择一个Java写得更好的和Go写的更好的呢?让你一会儿写前端一会儿写后端一会儿写大数据的公司会是什么公司呢?这种公司去了也会迅速搞花简历,显得极为不专业。要么就是有编制的国企可以做很多打杂,要么就是去专业的公司。日本池子很小,一会儿Ruby,一会儿Go,一会儿Java,一会儿Python,真是惊呆了,但是国内可不惯着你,人那么多,不需要半吊子。大部分人,本来就精力有限,哪里能够同时学这么多呢?????每个领域的大佬都快速抢完了顶尖资源,每次瓜分的都是剩下的残羹冷炙,你有什么资本同时搞这么多???学成半吊子,人家也不会问一句,人家不会问我N1学起来有多痛苦,要花多少事件去背诵,不会问我口语多难交流,你浪费多久的青春也没用,到了这里,就是Java的主场。对于我来说,目前已经有Java offer了,才可以理直气壮的说,给我TM死磕Java,但是对于其他人来说,100个面试都没有机会怎么办?或许就是早期开始的时候,都学点,然后海投,最后给你机会的就去深入。总结--------我们都是抢大佬们剩下的剩菜剩饭的,所以池子大是必须的,其他池子三年五年大佬多的要死,池子更小连一口汤都没有!!!!所以只要池子够大, 只要市场上还有可以生存的工作机会,就往死里卷这个。
何人听我楚狂声:
无所谓,go是垃圾(字节内部名言
0
点赞
评论
收藏
分享
2023-04-02 23:19
不要说自己只喜欢北京/深圳/上海之类的
我理所当然的觉得这个公司的岗位都是北京的,所以会说我更喜欢北京,不喜欢上海之类的,但是很有可能上海有补录的机会。所以最好还是说,我很喜欢北京的,因为什么什么。。。但是不要说我讨厌上海,而是说,上海相对来说怎么 怎么,但是如果上海有机会,我依然愿意去适应,我认为快速适应环境是一个人的基本生存能力。心塞-----------其实普通人哪里有什么资格说喜欢哪里呢,还不是哪里要就去哪里
0
点赞
评论
收藏
分享
2023-03-31 14:34
速记-快慢指针
快指针--a+K(b+c)+b慢指针--a+b两倍关系---那么K(b+c) = a + b那么如果慢指针和快指针都一起再走a长度也就是a + b + a = a + (a + b ) = a + K(b+c)也就是走完a长度进入环入口,随后整数圈---因此快慢指针-随后a步
0
点赞
评论
收藏
分享
2023-03-31 13:24
速记-k个一组反转
直接利用上一道的n-m反转每次计算1-k如果小于k直接返回head,否则就是利用上面方法反转1-k的节点,随后此时返回当前的头节点pre,之前的head变成了终结点,也就是head.next再次新一轮递归----会做到这里就差不多了if(head==null) return head;int cnt = 0;ListNode curr = head;ListNode pre = head;while(curr!=null){cnt++;curr = curr.next;if(cnt>=k) break;}if(cnt<k) return head;pre = reverse(head,1,k);head.next = reverseKGroup(head.next,k);return pre;
0
点赞
评论
收藏
分享
2023-03-31 12:48
速记-指定区间反转
pre只遍历到m-1即可!for(int i=0;i<m-1;i++){pre =pre.next;}---是<m-1!!!!然后是after.next = pre.next!!这个curr动态往后移动的,只有pre.next才是一直是第一个头节点!!!!
0
点赞
评论
收藏
分享
2023-03-30 21:22
速记-二分查找
还是牢记模板,自己写的一直是错的!!!!public static int binarySearch(int[] arr, int target) {int low = 0, high = arr.length - 1;while (low <= high) {int mid = (low + high) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {low = mid + 1;} else {high = mid - 1;}}return -1;}必须这样子写!!!!!!!!!难怪每次写的不对!尴尬死了!!!!
0
点赞
评论
收藏
分享
2023-03-30 12:46
速记-线程
线程的原子性和可见性是多线程编程中的两个重要概念:原子性:原子性指的是操作不可分割,要么全部执行成功,要么全部执行失败。在多线程环境下,如果多个线程同时执行对共享变量的修改操作,就可能会出现数据竞争和不一致的问题。为了保证原子性,可以使用 synchronized 或 Lock 等同步机制来保证多线程对共享变量的互斥访问,从而避免数据竞争和不一致的问题。可见性:可见性指的是当一个线程修改了共享变量的值后,其他线程能够立即看到修改后的值。在多线程环境下,如果多个线程同时访问共享变量,就可能会出现线程间数据不一致的问题。为了保证可见性,可以使用 volatile 关键字来修饰共享变量,从而保证线程对共享变量的读写操作具有可见性。在多线程编程中,保证原子性和可见性是非常重要的,可以有效地避免线程安全问题和数据不一致的问题。同时,开发者也应该注意线程安全的编程习惯,如尽量减少共享变量的使用、使用不可变对象、避免在锁内部进行耗时操作等,从而使多线程编程更加稳定和可靠。线程的安全指的是在多线程环境下,程序能够正确、稳定、高效地运行,并且不会出现数据竞争、死锁、饥饿等线程安全问题。在多线程编程中,线程安全是一个非常重要的概念,因为多个线程同时访问共享的资源,很容易出现竞争和冲突,导致程序出现各种线程安全问题。为了保证线程安全,可以采用以下几种方式:使用同步机制:使用 synchronized 或 Lock 等同步机制可以保证多线程对共享资源的互斥访问,避免数据竞争和不一致的问题。使用线程安全的类:Java 中提供了很多线程安全的类,如 ConcurrentHashMap、CopyOnWriteArrayList 等,这些类都是设计用于多线程环境的,可以避免数据竞争和不一致的问题。使用不可变对象:不可变对象指的是创建后不能被修改的对象,因此不会出现多线程修改同一对象的情况,也不需要使用同步机制来保护共享资源。避免共享资源:尽量避免多个线程共享同一份资源,尽可能让每个线程拥有自己的数据副本,从而避免数据竞争和不一致的问题。减少锁的粒度:总之,在多线程编程中,保证线程安全是非常重要的,需要采用正确的编程方法和技术,从而避免数据竞争、死锁、饥饿等线程安全问题,保证程序的正确、稳定、高效运行。
0
点赞
评论
收藏
分享
2023-03-30 12:27
速记-顺时针
while(startX<=endX&&startY<=endY){if(startY==endY){for(int i=startX;i<=endX;i++){ans[index++] = mat[i][endY];}break;}if(startX==endX){for(int i=startY;i<=endY;i++){ans[index++] = mat[endX][i];}break;}for(int i=startY;i<=endY;i++){ans[index++] = mat[startX][i];}for(int i=startX+1;i<=endX;i++){ans[index++] = mat[i][endY];}for(int i=endY-1;i>=startY;i--){ans[index++] = mat[endX][i];}for(int i=endX-1;i>=startX+1;i--){ans[index++] = mat[i][startY];}startX++;endX--;startY++;endY--;
0
点赞
评论
收藏
分享
2023-03-30 11:42
速记-破坏双亲委派
双亲委派机制是 Java 类加载机制的一个核心概念,它规定了父类加载器优先加载类的原则。破坏双亲委派机制可能会引发一些安全问题和类加载冲突问题,因此一般情况下不建议破坏双亲委派机制。以下是一些可能破坏双亲委派机制的方法:重写 ClassLoader 的 loadClass() 方法:在重写 loadClass() 方法时,可以将类的加载交给子类加载器来完成,从而破坏双亲委派机制。例如,可以在 Web 应用程序的 ClassLoader 中重写 loadClass() 方法,使得它可以从 Web 应用程序中加载类。使用 Thread.currentThread().setContextClassLoader() 方法:该方法可以在当前线程中设置上下文类加载器,使得类的加载可以交给指定的类加载器来完成,从而破坏双亲委派机制。例如,可以在某个 Web 应用程序中设置上下文类加载器为 Web 应用程序的 ClassLoader。使用 Java 反射机制:使用 Java 反射机制可以在运行时动态创建并加载类,从而破坏双亲委派机制。例如,可以使用 Class.forName() 方法或 ClassLoader.defineClass() 方法来加载类。需要注意的是,破坏双亲委派机制可能会引发一些安全问题和类加载冲突问题,因此应该谨慎使用。如果需要破坏双亲委派机制,可以通过设置安全策略和使用合适的类加载器来规避这些问题。
0
点赞
评论
收藏
分享
2023-03-30 10:23
速记-泛型擦除
泛型擦除是 Java 泛型中一种类型擦除机制,它是指在编译期间对泛型类型信息进行擦除,将泛型类型信息转换成普通的类型,从而避免了 Java 泛型运行时的性能消耗和类型转换的问题。具体而言,泛型擦除会将泛型类型参数在编译时替换成 Object 类型,并在需要类型转换的地方插入强制类型转换。例如,对于一个泛型类 List<T>,在编译时泛型类型参数 T 会被擦除,因此 List<T> 会被转换成 List<Object> 类型,并在需要类型转换的地方插入强制类型转换。泛型擦除的优点是可以使泛型代码与非泛型代码相互操作,同时还可以减少内存使用和提高性能。但它也有一些缺点,比如在运行时无法获得泛型类型信息,这可能会导致一些运行时异常。另外,泛型擦除也会限制一些使用泛型的高级特性,如泛型数组和通配符类型等。ava 泛型可以有以下几种参数:类型参数(Type Parameters):它用来指定泛型类型的占位符,可以是任意标识符,通常用大写字母来表示。例如,List<T> 中的 T 就是一个类型参数。通配符类型参数(Wildcard Type Parameters):它使用 ? 来表示一种不确定的类型参数,可以用来限制方法参数的类型范围。例如,List<? extends Number> 中的 ? extends Number 就是一个通配符类型参数,表示 List 中的元素必须是 Number 类型或其子类型。有界类型参数(Bounded Type Parameters):它可以限制泛型类型的取值范围,可以指定上界或下界。例如,<T extends Number> 中的 extends Number 就是一个有界类型参数,表示 T 必须是 Number 类型或其子类型。泛型数组参数(Generic Array Parameters):它用来指定泛型数组的类型,可以使用类型参数或通配符类型参数。例如,T[] 或 ?[] 都是泛型数组参数。以上是 Java 泛型中常用的几种参数类型,开发者可以根据自己的需要来选择合适的参数类型来定义泛型类型或方法。
0
点赞
评论
收藏
分享
1
2
3
4
5
6
10
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务