java面试简单问题,java8函数式编程实例,mysql面试题常问

无参数,返回一个结果。

|

| 37 | ToDoubleBiFunction<T,U>

接受两个输入参数,返回一个double类型结果

|

| 38 | ToDoubleFunction

接受一个输入参数,返回一个double类型结果

|

| 39 | ToIntBiFunction<T,U>

接受两个输入参数,返回一个int类型结果。

|

| 40 | ToIntFunction

接受一个输入参数,返回一个int类型结果。

|

| 41 | ToLongBiFunction<T,U>

接受两个输入参数,返回一个long类型结果。

|

| 42 | ToLongFunction

接受一个输入参数,返回一个long类型结果。

|

| 43 | UnaryOperator

接受一个参数为类型T,返回值类型也为T。

|

除了上面列出的,还有个别函数接口没列出来,例如Comparator(), 但总归是个函数接口都会基于FunctionalInterface注解

总结

这些函数主要还是分为几个主要函数,其余都是以其为基础的分化;

  • Supplier 无参数,返回一个结果。

  • Consumer 代表了接受一个输入参数并且无返回的操作。

  • Function<T,R> 接受一个输入参数,返回一个结果,返回的结果跟参数的类型无关。

  • Predicate 接受一个输入参数,返回一个布尔值结果。

  • BinaryOperator 代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果,xxxOperator 函数都是接受类型跟返回值类型相同。

而且,从上面五个主要函数接口命名也可以看出其作用,"Bi"作为前缀的都是属于二元操作,接受两个参数。

T1to_T2_是从接受T1类型参数,返回T2类型结果,比如IntToLongFunction 接受一个int类型参数,返回long类型结果。

实战1

下面我写了一个功能,拳击手有分组跟体重两个属性,然后给一组拳击手集合,根据小组或者体重级排序,用到的是Comparator(),也是一个函数接口

上码:

  1. /**

  2. * Created by zhanghe

  3. * 拳击手

  4. */

  5. public class Boxer {

  6. //分组

  7. private String group;

  8. //重量级

  9. private Integer weight;

  10. public Boxer(String group, Integer weight) {

  11. this.group = group;

  12. this.weight = weight;

  13. }

  14. public static <T> List<List<T>> divider(List<T> datas, Comparator<T> c) {

  15. //声明一个列表来接收各个分组

  16. List<List<T>> list = new ArrayList<>();

  17. for (T t : datas) {

  18. //通过isSameGroup 标识来判断分组是否已创建

  19. boolean isSameGroup = false;

  20. for (int i = 0; i < list.size(); i++) {

  21. //compare函数返回值为int,正数说明param1>param2,0说明param1=param2,负数说明param1<param2

  22. //这里用到的原理是将List列表datas中的各项与分组列表list中的元素比较(比较的规则由外面作为参数传递,这就是函数式编程),

  23. // 值为0表示规则相符即为同一组

  24. if (c.compare(t, list.get(i).get(0)) == 0) {

  25. isSameGroup = true;

  26. list.get(i).add(t);

  27. break;

  28. }

  29. }

  30. //比较完了发现没有规则相符的,即自成一系

  31. if (!isSameGroup) {

  32. List<T> e = new ArrayList<>();

  33. e.add(t);

  34. list.add(e);

  35. }

  36. }

  37. return list;

  38. }

  39. public static void main(String[] args) {

  40. List<Boxer> boxers = Arrays.asList(

  41. new Boxer("红队", 120),

  42. new Boxer("绿队", 180),

  43. new Boxer("蓝队", 200),

  44. new Boxer("绿队", 220),

  45. new Boxer("蓝队", 120),

  46. new Boxer("红队", 80),

  47. new Boxer("红队", 90),

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

面试了阿里,滴滴,网易,蚂蚁,最终有幸去了网易【面试题分享】

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

GkJT-1712258518835)]

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值